oracle批量插入優化方案


今天聽DBA說如果從一個表批量查詢出一批數據之后批量插入另外一張表的優化方案:

1)不寫歸檔日志;

2)采用獨占

關於insert /*+ append */我們需要注意以下三點:

a、非歸檔模式下,只需append就能大量減少redo的產生;歸檔模式下,只有append+nologging才能大量減少redo。

b、insert /*+ append */時會對表加鎖(排它鎖),會阻塞表上的除了select以外所有DML語句;

 1 --不寫日志設置
 2 ALTER TABLE my_flosta_all_571 NOLOGGING;
 3 
 4 insert /*+APPEND */ into my_flosta_all_571(OID,P_DAY,CITY,BUILDINGID,BUILDINGNAME,HASINDOOR)
 5 select OID,to_date('20180103','yyyyMMdd') as P_DAY,CITY,BUILDINGID,BUILDINGNAME,HASINDOOR
 6 from my_flosta_all_571 where p_day=to_date('20171231','yyyyMMdd');
 7 commit;
 8 
 9 insert /*+APPEND */ into my_flosta_all_571(OID,P_DAY,CITY,BUILDINGID,BUILDINGNAME,HASINDOOR)
10 select OID,to_date('20180104','yyyyMMdd') as P_DAY,CITY,BUILDINGID,BUILDINGNAME,HASINDOOR
11 from my_flosta_all_571 where p_day=to_date('20171231','yyyyMMdd');
12 commit;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM