oracle一次提交的上限 Oracle數(shù)據(jù)庫(kù)一次執(zhí)行大量的insert語(yǔ)句,怎樣優(yōu)化?
Oracle數(shù)據(jù)庫(kù)一次執(zhí)行大量的insert語(yǔ)句,怎樣優(yōu)化?1. 原始表中有多少數(shù)據(jù)?考慮是否可以刪除或禁用索引?插入后重新生成2。當(dāng)業(yè)務(wù)空閑時(shí),使用append和parallel進(jìn)行insert3。
Oracle數(shù)據(jù)庫(kù)一次執(zhí)行大量的insert語(yǔ)句,怎樣優(yōu)化?
1. 原始表中有多少數(shù)據(jù)?考慮是否可以刪除或禁用索引?插入后重新生成
2。當(dāng)業(yè)務(wù)空閑時(shí),使用append和parallel進(jìn)行insert
3。您還可以設(shè)置每1W提交一條記錄
以加快Oracle數(shù)據(jù)庫(kù)的數(shù)據(jù)插入速度。
從編程的角度來(lái)看:
1。使用綁定變量來(lái)實(shí)現(xiàn)一個(gè)預(yù)編譯和多次執(zhí)行的效果。如果不使用綁定變量,數(shù)據(jù)庫(kù)每次都會(huì)分析SQL并消耗資源。
2使用Oracle提供的批處理接口,減少網(wǎng)絡(luò)傳輸次數(shù),提高效率
3適當(dāng)增加提交間隔,提交指令消耗更多數(shù)據(jù)庫(kù)資源,提交前盡量插入更多數(shù)據(jù)。1000多條建議。
4. 使用insert語(yǔ)句的hint(如append)和nologing選項(xiàng)來(lái)減少數(shù)據(jù)庫(kù)日志注冊(cè)。
5. 從數(shù)據(jù)庫(kù)的角度考慮使用多進(jìn)程插入或并行提示插入
1。將表更改為nologing模式,這樣就不需要注冊(cè)回滾日志了
2。對(duì)表進(jìn)行分區(qū),使不同的分區(qū)落在不同的硬盤上
3。刪除表的索引,插入數(shù)據(jù)后還原
4。增加數(shù)據(jù)庫(kù)緩沖區(qū)
5使用SSD存儲(chǔ)和其他高效硬盤作為數(shù)據(jù)庫(kù)存儲(chǔ)
其他細(xì)節(jié):
例如,將程序部署到數(shù)據(jù)庫(kù)服務(wù)器,然后進(jìn)行操作以減少網(wǎng)絡(luò)消耗
插入數(shù)據(jù),并將程序輸出日志重定向到硬盤
沒(méi)有好辦法,最后一次提交
如果需要,根據(jù)條件過(guò)濾數(shù)據(jù)并分別提交
例如:
insert into table_u2;a select*from table_2;b where type=1
commit
insert into table_2;a select*from table_2;b where type=2
commit
就是一個(gè)例子。最后一種是成套的