2014-03-24 114 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来激活它,最初没有记录。