數(shù)據(jù)庫oracle Oracle在插入大量數(shù)據(jù)時速度會越來越慢,請問有什么解決辦法?
Oracle在插入大量數(shù)據(jù)時速度會越來越慢,請問有什么解決辦法?加快oracle數(shù)據(jù)庫插數(shù)據(jù)速度方法:從編程角度考慮:1 使用綁定變量,達到一次預(yù)編譯多次執(zhí)行的效果。如果不使用綁定變量,數(shù)據(jù)庫每次都要
Oracle在插入大量數(shù)據(jù)時速度會越來越慢,請問有什么解決辦法?
加快oracle數(shù)據(jù)庫插數(shù)據(jù)速度方法:
從編程角度考慮:
1 使用綁定變量,達到一次預(yù)編譯多次執(zhí)行的效果。如果不使用綁定變量,數(shù)據(jù)庫每次都要對sql進行分析,消耗資源。
2 使用oracle提供的批量接口,這樣可以減少網(wǎng)絡(luò)傳輸次數(shù),加快效率
3 適當(dāng)增加commit間隔,commit指令比較消耗數(shù)據(jù)庫資源,盡量多插入一些數(shù)據(jù)再提交。建議一千條以上。
4 使用hint(如 append),使用insert 語句 nologging選項,減少數(shù)據(jù)庫日志登記。
5 考慮使用多進程插入或者使用并行hint插入
從數(shù)據(jù)庫角度考慮:
1 把表改成nologging模式,這樣不用登記回滾日志
2 對表進行分區(qū),讓不同分區(qū)落在不同硬盤
3 把表的索引刪除,插完數(shù)據(jù)后再恢復(fù)
4 增大數(shù)據(jù)庫緩沖區(qū)
5 使用ssd存儲等高效硬盤作為數(shù)據(jù)庫存儲
其他細節(jié):
例如把程序部署到數(shù)據(jù)庫服務(wù)器再操作,減少網(wǎng)絡(luò)消耗
插入數(shù)據(jù)程序輸出日志重定向到硬盤
Oracle大數(shù)據(jù)量導(dǎo)入,中途停止了,是怎么回事?
oracle中 HWM高水位不會因為delete而下降, 那么雖然你DELETE了很多數(shù)據(jù),但是全表掃描還是要掃描到HWM 下的所有數(shù)據(jù)塊。
但是對于經(jīng)常插入和刪除的日志表,這樣是正常的,因為你回收了空間后,它又會增長上去,回收空間的意義很小。
除非是那種刪除后不再插入數(shù)據(jù)的表, 可以考慮用ALTER TABLE MOVE / SHRINK SPACE的方法來回收空間。
Oracle批量數(shù)據(jù)插入60000條以上,速度變的很慢,而且中間會斷。求解決方案?
分批次提交比如5000條提交一次。要是可以的話建議用sqlloader插入