2014-03-24 143 views
0

在Windows 2008上運行DB2 9.7.5 LUW。我通過WAN從MS SQL 2008服務器每小時傳輸一次數據。我從MS SQL讀取數據,將數據和批處理插入解析到DB2中的工作表中,然後在DB2中將數據從工作表合併到主表中。合併完成後,我清除工作表以準備下一次加載。我注意到我的日誌文件非常大。由於數據交換期間數據庫會話是打開和關閉的,因此臨時表不適用,因此使用工作表。數據由我製作的Java應用程序傳輸。DB2暫停日誌記錄

我不需要記錄工作表事務。我已經從IBM 中讀到這個article,發現日誌不會像創建表時那樣在同一個工作單元中發生。

使用CREATE TABLE ...不是最初LOGGEDALTER TABLE ...不是最初 LOGGED真的有用嗎?從我的理解,一旦你創建了第一次提交後開始日誌記錄的表?

我是否需要每次創建表時未記錄,然後用alter table not logged清除它?有沒有更好的辦法?

+0

經過一些更多的研究與方向@mustaccio,與試驗和錯誤。我認爲我找到了最佳的行動方式。在我進行批量插入之前,我會調用一個'TRUNCATE TABLE',然後一個'ALTER TABLE ... NOT LOGGED INITIALLY'提交批量插入。從另一個數據庫讀取更多數據。在下一批插入時只需調用「ALTER TABLE ... NOT LOGGED INITIALLY」。繼續這個循環,直到所有數據傳輸完畢。 – GeekyDaddy

回答

0

您不需要每次都創建表格。在將數據插入同一工作單元(事務)中的表之前,您發出ALTER TABLE...NOT LOGGED INITIALLY

您不指明如何清除工作表;我希望你使用的是TRUNCATE TABLE語句,它比刪除表記錄和最小化記錄效率更高。

+0

我正在使用'ALTER TABLE ... NOT LOGGED INITIALLY WITH EMPTY TABLE'來刪除表。 – GeekyDaddy

0

您不需要改變最初未記錄的表格。你只需要每次使用alter table tablename activate來激活它,最初沒有記錄。