”Ask Tom” ~トム・カイトのデータベース相談室~
効率性、索引の回避、パフォーマンスについて
オラクルの技術者が、非常に効率的なDDLを使用し、トリック質問に回答し、スカラー副問合せについてアドバイスします。
A: 数百万のレコードを含む表があります。このうちの特定の数のレコード、たとえば10,000件を更新してコミットしたいのですが、ロールバック・セグメントの問題に陥る可能性があるため、一気に処理したくありません。最適な方法について教えていただけますか。
Q: よくこのような質問を受けます。答えは、UPDATEを使用しないこと(または、更新ではなく消去の場合は、DELETEを使用しないこと)です。UPDATEとDELETEは、一部のレコード(一度に1レコード、あるいは10レコード)を変更するようなオンライン・トランザクション処理(OLTP)システムではたしかに優れていますが、大規模な処理には適していません。UNDOを生成する必要があり、その結果生成されるREDOは大規模なバッチ処理には不要なオーバーヘッドとなります。.........
津島博士のパフォーマンス講座
第27回 オプティマイザとオプティマイザ統計の収集について(2)
皆さんこんにちは、もう梅雨入りしましたね。ジメジメした嫌な時期が続きますが、体調に気をつけて頑張りましょう。今回は、第5回の続きとして、オプティマイザ統計と実行計画について説明します。オプティマイザ統計の収集が複雑になっていますので、少し情報を整理したいと思いまとめてみましたので、参考にしてください。
1. オプティマイザ統計と実行計画
まずは、オプティマイザ統計(統計)と実行計画について説明しましょう。
実行計画の管理が難しいことから、コストベース・オプティマイザ(CBO)よりルールベース・オプティマイザ(RBO)の方が、使い易いというようなことを聞きます。これは、RBOがSQLの構文によって実行計画を作成するため、経験のある方には管理し易いからだと思います。ただし、複雑なSQL文のときや経験の少ない方でも効果的に使用できるという意味では、統計からコスト計算して、実行計画を作成するCBOの方が優れています。.........
しばちょう先生の試して納得!DBAへの道
第18回表のオンライン再定義でDML文の遅延を回避
今回はこれまでの連載でも度々機能名だけ紹介してきた、表のオンライン再定義をご紹介したいと思います。例えば、表データ量が多くなったので表領域を移動しつつ圧縮したい。しかし、表をメンテナンス中でも業務トランザクションは継続させたい。という欲張りなシチュエーションに遭遇したらチャンス到来です。「私なら業務トランザクションを止めることなく、表をメンテナンスできますよ!」と宣言し、オンライン再定義を使用して作業をすれば、貴方は皆から尊敬されること間違いなしです。って、言い過ぎかもしれませんが。。。そのようなチャンスを逃さない為にもオンライン再定義を体験マスターしておきましょう。 ........
続きを読む