日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
DB2插入數(shù)據(jù)不進行日志操作的實現(xiàn)

DB2插入數(shù)據(jù)一般都會進行日志操作,不過下面為您介紹的方法實現(xiàn)了DB2插入數(shù)據(jù)不進行日志操作,如果您感興趣的話,不妨一看。

從網(wǎng)站建設(shè)到定制行業(yè)解決方案,為提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè)服務(wù)體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設(shè)解決方案,助力業(yè)務(wù)快速發(fā)展。成都創(chuàng)新互聯(lián)將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務(wù)。

在程序中需要使用下面的代碼  
          insert   into   a   select   *   from   b   where   ......  
每次插入到a表的記錄有600多萬條,每次執(zhí)行該語句DB2都會返回SQLCODE值為-964的錯誤碼,用db2 sql0964命令查看錯誤原因,DB2的解釋為SQL0964C   The   transaction   log   for   the   database   is   full.   然后按照DB2的說明把日志文件的大小和日志文件的數(shù)量都擴充了,如下命令  
db2   update   db   cfg   for   MY_DATABASE   using   LOGFILSIZ   7900  
db2   update   db   cfg   for   MY_DATABASE   using   LOGPRIMARY   30  
db2   update   db   cfg   for   MY_DATABASE   using   LOGSECOND   20  
補充一下用的是循環(huán)日志  
   
總的日志文件擴大到了1.5G左右,然后執(zhí)行下面的命令  
db2   "force   application   all"  
db2stop  
db2start  
db2   connect   to   MY_DATABASE   user   db2inst1   uing   db2inst1  
   
***從新調(diào)用包含insert   into   ...   select   ...語句的存儲過程,此次程序執(zhí)行完畢,但效率太慢。  
   
后來一想是否能使對某表進行的DML操作不進行日志操作,把a表和b表都刪除了,從新建表,建表時選擇了not   logged   initially子句,建完表后我把數(shù)據(jù)從新導(dǎo)入到b表中,***執(zhí)行包含insert   into   ...   select   ...語句的SQL存儲過程,DB2仍舊返回SQLCODE的值為-964的錯誤碼。  
   
有沒有一個高效的方法(***能讓DB2執(zhí)行此類方法時不進行日志操作)解決這個問題呢?

-------------

去除記錄日志。  
到控制中心--配置--日志--日志活動,配置成不記錄日志。

-------------

采用循環(huán)日志可以考慮調(diào)整一下數(shù)據(jù)庫的commitcount參數(shù)

-------------

使用not   logged   initially選項建表也是可以用的。  
但是要先激活not   logged   initially選項;  
在DB2   CLP中的例子;  
DB2   CREATE   TABLE   A   ......   NOT   LOGGED   INITIALLY;  
DB2   +C         //關(guān)閉自動提交選項;  
db2=>ALTER   TABLE   A   ACTIVATE   NOT   LOGGED   INITIALLY;  
db2=>Insert   into   a   select   *   from   b;  
db2=>commit;  
commit之前由于打開了not   logged   intially選項,后面的Sql語句不計日志;  
commit之后not   logged   intially選項同時被關(guān)閉;  
這個時候***執(zhí)行備份,因為你這一段數(shù)據(jù)操作是沒有日志的,不利于以后恢復(fù);  
   
不過不是很推薦使用這個方法,如果要導(dǎo)入大量數(shù)據(jù),還是使用Load,Import好一些;  
想要在程序中寫也是可以的,DB2提供了API,可以參考API   Reference

【編輯推薦】

手工分析DB2 sql文執(zhí)行計劃

DB2 SQL腳本批量執(zhí)行的實現(xiàn)過程

DB2在線導(dǎo)出的方法

db2存儲過程常用語句

DB2 CREATE SERVER語句的用法


文章標(biāo)題:DB2插入數(shù)據(jù)不進行日志操作的實現(xiàn)
標(biāo)題路徑:http://www.dlmjj.cn/article/dhgoscc.html