Oracleバージョン9以降では、いつ、どのようにテーブル統計の収集を実行する必要がありますか?統計収集が「営業時間」と衝突する大規模なデータベースの統計を収集するにはどうすればよいでしょうか。
4 に答える
削除や挿入がたくさん行われた後は、常に統計を再構築する必要があることに同意しません。相変わらず、それは状況次第です。データウェアハウスの状況では、マテリアライズドビューを再構築するときに、多くの削除と挿入を実行しますが、データの基本構造は変更されません。
テーブルの内容に大幅な変更があった場合にのみ、テーブルの統計を再計算する必要があります。これは、必ずしも多くの削除または挿入の後を意味するのではなく、削除、挿入、または更新が可能な実行プランに関してコンテンツを大幅に変更する場合を意味します。
テーブルを切り捨てて再構築する場合(統計をリセットします)、コストのかかる統計計算の代わりに、テーブルを再構築した後で統計を切り捨てて復元する前に、統計を保存する方がよい場合がよくあります。
使用する統計の現在のビューを保存するには、次のようにします。
dbms_stats.export_table_stats
後でそれらを復元するには、次を使用します。
dbms_stats.import_table_stats
(とに対応する手順がschema
ありdatabase
ます。)
統計の収集は、データコンテンツに大きな変更があった場合、たとえば、多数の削除や挿入があった場合に実行する必要があります。テーブル構造が変更された場合は、統計も収集する必要があります。'ESTIMATE'オプションを使用することをお勧めします。
可能であれば、営業時間外の自動プロセスとしてこれを実行します。営業時間中に実行する必要がある場合は、統計を収集するテーブルへのアクセスが最小限になる時間を選択します。
見積もり (sample_percent) を使用するときは、少なくとも 10 パーセントを収集するようにしてください。それ以下では、非常に疑わしい結果が生じる可能性があります。
収集時に現在の統計をバックアップすることを検討してください。そうすることで、それらを比較し (興味がある場合)、新しい統計が問題を引き起こした場合にそれらを復元することができます。統計は実行計画を決定するために使用されることに注意してください。実行計画を変更したい場合にのみ統計を収集することをお勧めします。