db2中的数据移动实用程序

时间:2014-06-24 06:46:59

标签: database db2 db2-luw

为什么数据移动期间not logged initially选项比使用DB2中的LOAD实用程序更快?

最初未记录方法:

db2 alter table tablename activate not logged initially

db2 insert into table tablename select * from tbname

加载实用程序:

db2 declare source cursor for select * from tablename

db2 load from source of cursor insert into tablename nonrecoverable

1 个答案:

答案 0 :(得分:1)

根据您的数据库大小和性能问题,我将假设您正在使用DB2的数据库分区功能(DPF)。

当您执行INSERT INTO ... SELECT时,这会在所有数据库分区上并行发生 - 每个分区都是独立工作的。关闭日志记录后,这将非常快(虽然很危险 - 如果出现问题,则必须删除并重新创建未记录的初始表。)

当您使用LOAD FROM CURSOR时,所有数据库分区都会执行SELECT语句并将行返回到协调程序分区,然后协调程序分区将它们提供给LOAD实用程序。然后,LOAD实用程序执行散列分区,以再次将数据发送回所有数据库分区。可以想象,对于大量数据,来回传输所有这些数据可能效率很低。