Partition Exchangeを介したテーブルのロード(Oracle 10g)
-
03-07-2019 - |
質問
このタイプの負荷の最適化についていくつか質問があります。
データの新しいテーブルを作成してパーティションテーブルにロードし、この新しいテーブルにインデックスを作成します。
-
COMPUTE STATISTICSオプションを使用してインデックスを構築するか、DBMS_StatsのCascadeオプションを使用しますか?
-
スワップ前のテーブルまたはスワップ後のパーティションの統計を収集する必要がありますか?
-
スワップ後にパラメータリストでパーティション名を指定した場合、粒度パラメータにはどのような相互作用がありますか?たとえば、パーティション名を指定し、粒度を「GLOBAL AND PARTITION」に設定すると、それはグローバルになりますか?その1つのパーティションをちょうどしますか?
解決
COMPUTE STATISTICSオプションを使用してインデックスを構築するか、DBMS_StatsのCascadeオプションを使用する必要がありますか?
これがデータウェアハウスの場合、まず統計をまったく収集せず、動的サンプリングを使用することを検討してください。第二に、統計を収集する場合は、必ずインデックスの計算統計を使用してください。
スワップ前のテーブルまたはスワップ後のパーティションに関する統計を収集する必要がありますか?
スワップの前に新しいデータテーブルの統計を収集して、新しいデータのパーティション統計を取得します。その後、パーティションテーブルの統計を収集して、テーブル統計を収集します
スワップ後に実行し、パラメータリストでパーティション名を指定した場合、粒度パラメータにはどのような相互作用がありますか?たとえば、パーティション名を指定し、粒度を「GLOBAL AND PARTITION」に設定すると、それはグローバルになりますか?その1つのパーティションだけを実行しますか?
上記を参照してください。
真剣に、統計情報と動的サンプリングを行わないでください。
他のヒント
-
DBMS_STATS
は、このバージョンの統計を計算する適切な方法と見なされます。COMPUTE STATISTICS
を使用してインデックスを構築することはできますが、通常は一度にすべての統計を計算してスナップショットを取得します。 -
スワップ後に統計を収集します。このようにして、オプティマイザーはそのパーティションのデータを使用してクエリを実行するための最良の推測を行います。
-
なぜ両方を入れるのですか?