1. DB2大數(shù)據(jù)處理不記錄事務(wù)日志步驟:
? 建表需要添加屬性“NOT LOGGED INITIALLY”
? 在大批量更改操作的同一個(gè)事務(wù)開(kāi)始時(shí)執(zhí)行:“ALTER TABLE tabname ACTIVATE NOT LOGGED INITIALLY”
? 執(zhí)行更新sql
? 提交,一個(gè)事務(wù)完成,后續(xù)sql為下一個(gè)事務(wù),默認(rèn)記錄事務(wù)日志
? 但是根據(jù)IBM的官方文檔及測(cè)試,建表的時(shí)候不加參數(shù)“NOT LOGGED INITIALLY”,直接進(jìn)行“ALTER TABLE tabname ACTIVATE NOT LOGGED INITIALLY”也是可以的。
2. IBM官方文檔:
使用 NOT LOGGED INITIALLY 參數(shù)減少日志記錄
如果應(yīng)用程序根據(jù)主表創(chuàng)建并填充工作表,并且您不擔(dān)心這些工作表的可恢復(fù)性(因?yàn)榭梢愿鶕?jù)主表方便地重新創(chuàng)建它們),
那么創(chuàng)建工作表時(shí)可以在 CREATE TABLE 語(yǔ)句上指定 NOT LOGGED INITIALLY 參數(shù)。這樣可以減少日志記錄并提高性能。
使用 NOT LOGGED INITIALLY 參數(shù)的優(yōu)點(diǎn)是,不記錄在創(chuàng)建表的同一個(gè)工作單元中對(duì)該表所作的任何更改(包括插入、刪除、更新或創(chuàng)建索引操作)。
這不僅降低了日志記錄工作量,還能提高應(yīng)用程序性能。還可以對(duì)現(xiàn)有表使用帶 NOT LOGGED INITIALLY 參數(shù)的 ALTER TABLE 語(yǔ)句,來(lái)獲得同樣的結(jié)果。
3. 理解
?? 上述描述說(shuō)了兩個(gè)意思:
??? 1.創(chuàng)建并填充工作表create table A as select * from B 時(shí)加NOT LOGGED INITIALLY不記錄日志。
??? 2.在表創(chuàng)建后(無(wú)論在建表時(shí)有無(wú)NOT LOGGED INITIALLY),對(duì)于一個(gè)事務(wù)不記錄日志時(shí),用“ALTER TABLE tabname ACTIVATE NOT LOGGED INITIALLY”。
? 可以看出不記錄日志只是對(duì)事務(wù)而言,當(dāng)事務(wù)提交后not logged intially選項(xiàng)同時(shí)被關(guān)閉。
? 因?yàn)樵撌聞?wù)沒(méi)有記錄日志,導(dǎo)致對(duì)應(yīng)的表出現(xiàn)異常后不能被恢復(fù)(發(fā)生SQL1477N異常,只能將表刪除重建),最好在not logged intially后對(duì)表執(zhí)行備份。
? not logged intially方法不被推薦使用,如果要導(dǎo)入大量數(shù)據(jù),還是使用Load,Import好一些; 想要在程序中寫(xiě)也是可以的,DB2提供了API,你可以參考API Reference。
4. sql舉例
DB2 CREATE TABLE A ...... NOT LOGGED INITIALLY;
db2 ALTER TABLE A ACTIVATE NOT LOGGED INITIALLY;
db2 Insert into a select * from b;
db2 commit;
commit之前由于打開(kāi)了not logged intially選項(xiàng),后面的Sql語(yǔ)句不計(jì)日志;
commit之后not logged intially選項(xiàng)同時(shí)被關(guān)閉; 這個(gè)時(shí)候最好執(zhí)行備份,因?yàn)槟氵@一段數(shù)據(jù)操作是沒(méi)有日志的,不利于以后恢復(fù)。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
