tshizuku03の日記

主にoracleやLinuxコマンドについての記事を載せていきたいと思っています。

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

別表から大量データをINSERTする場合、APPENDヒントを利用することで、
通常のINSERT処理ではなく、ダイレクトロードインサート処理を実行できます。
このダイレクトロードインサート処理では、バッファ・キャッシュを経由せずにデータを
INSERTすることができ、また最低限のREDO情報のみが生成されるため、通常のINSERT処理よりも
大きくパフォーマンスを改善できる可能性があります。

※注意点
1.ハイ・ウォーター・マーク(HWM)以降のブロックにINSERTされる
→通常のINSERT処理であれば、空ブロックにデータをINSERTすることが可能ですが、
ダイレクトインサートは、HWM以降のブロックにデータがINSERTされる。

2.表単位のロックが獲得される
→通常のINSERT処理はレコード単位でロックが獲得されますが、ダイレクトロードインサート処理では
表単位でロックが獲得されます。

3.ダイレクトロードインサート処理後、トランザクションを完了する必要がある
ダイレクトロードインサート処理の実行直後は、必ずトランザクションを完了させる(COMMIT・ROLLBACK)必要がある