-1

DB2 でユーティリティnot logged initiallyを使用するよりもデータ移動中のオプションの方が速いのはなぜですか?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
4

1 に答える 1

1

データベースのサイズとパフォーマンスに関する質問に基づいて、DB2 で Database Partitioning Feature (DPF) を使用していると仮定します。

を実行するINSERT INTO ... SELECTと、これはすべてのデータベース パーティションで並行して発生します。各パーティションは独立して動作します。ロギングをオフにすると、これは非常に高速になります (危険ではありますが、問題がある場合は、最初にログに記録されていないテーブルを削除して再作成する必要があります)。

を使用するLOAD FROM CURSORと、すべてのデータベース パーティションが SELECT ステートメントを実行し、行をコーディネーター パーティションに返します。コーディネーター パーティションはそれらをLOADユーティリティに送ります。次に、LOADユーティリティーはハッシュ・パーティション化を実行して、データをすべてのデータベース・パーティションに再び送り返します。ご想像のとおり、大量のデータがある場合、このすべてのデータをやり取りするのは非常に非効率的です。

于 2014-06-24T16:01:28.837 に答える