-1

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

最初未记录方法:

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
4

1 回答 1

1

根据您的数据库大小和性能问题,我将假设您在 DB2 中使用 Database Partitioning Feature (DPF)。

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

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

于 2014-06-24T16:01:28.837 回答