2

880 百万行の PK とインデックスの作成には、約 1:15 時間かかります。

クエリ:

 alter table STG.NOTES add constraint PK_NOTES primary key (NOTES_SK);
 create unique index STG.BK_NOTES on STG.NOTES (NOTE_NBR ASC);

これをスピードアップする方法はありますか?並列オプションとログなしオプションについて読みました。Oracle サーバーには 2 つの CPU があるため、並列 (n-1 = 2-1 = 1) は役に立ちません。nologging だけを残します。それについて何を教えてもらえますか?トレードオフとは何ですか?なぜあなたはそれを使う/使わないのですか?

編集:インデックス作成のコンテキストが何であるかを説明する必要があるかもしれません:

  1. ターゲット テーブルを切り捨て、PK とインデックスをターゲット テーブルにドロップする

  2. ソースから選択し、ターゲットに一括挿入

  3. ターゲット テーブルにインデックスと PK を作成します (= 1:15 時間)

4

2 に答える 2

1

実際には、2 コアの PC でより高度な並列処理を使用できます。parallel_max_serversデータベースのデフォルト設定を確認してください。

show parameter parallel_max_servers

並行して実行するには、使用できます

alter session force parllel ddl parallel 4

コーディネーターに加えて 8 スレーブが作成されます。

についてnologgingは、良い選択肢だと思います。を使用nologgingすると、災害が発生した場合にインデックスを再作成する必要があります。インデックス作成プロセスがルーチンである場合は、それを考慮することができます。

于 2013-08-08T07:45:49.227 に答える