最近のトラックバック

最近のコメント

2017年3月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

« NOLOGGING属性(ロギング属性) | トップページ | firefoxのアドオン集 »

2008年5月27日 (火)

ダイレクト・ロード・インサート

こんな感じ。

INSERT /*+ APPEND */ INTO tab_a
SELECT * FROM tab_b

んー、速い!
こちらの環境で、600万件(平均レコード長が105バイト)ほどのテーブルのインサートで2分程度でした(通常の場合は測る気がしないほどかかります)。

注意)アーカイブログモードの場合、tab_aがNOLOGGING属性で作成されていないと、LOGGINGモードでダイレクト・ロード・インサートされます

・ダイレクトロードインサートのメリット、デメリット メリット: 通常のINSERT文とは違い、バッファキャッシュを使用しないで、ダイレクトにデータファイルへの書き込みを行うため、INSERTにかかる時間が短縮される。
パラレル度を設定している場合には、書き込み処理が並列に動作し、さらに、INSERTにかかる時間が短縮される。
デメリット:
 (1)表に対する排他ロックが取られるため、INSERTが終了するまでは、他のトランザクションによるINSERT/UPDATE/DELETE文は同時に実行できない。
 (2)非パーティション表に対するダイレクトロードインサートでは、そのテーブルの既存の空き領域にINSERTするのではなく、そのテーブルのHigh Water Markより先に新しく領域を割り当ててINSERTする。
  (新しく割り当てた領域はINSERT中はテンポラリセグメントと呼ばれ、INSERT終了後に既存のテーブルにマージされる)。そのため、通常のINSERT文より多くの領域を使うことがある。
 →新規に作成したばかりのテーブルにのみ使ったほうがよいですね。

思うに、ダイレクト・ロード・インサートは、新規にテーブルを作成したタイミング(つまりデータが0件で、どのブロックもまだ使われた事のない状態)で実行するのが、一番ふさわしいでしょうね。

« NOLOGGING属性(ロギング属性) | トップページ | firefoxのアドオン集 »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/181317/41342198

この記事へのトラックバック一覧です: ダイレクト・ロード・インサート:

« NOLOGGING属性(ロギング属性) | トップページ | firefoxのアドオン集 »