web-dev-qa-db-ja.com

すべてのテーブルを毎晩再編成することの短所

すべてのテーブルを毎晩再編成するSQL Serverジョブをスケジュールすることを検討しています。私たちにはエンタープライズがないため、オンラインで再構築することはできません(つまり、再編成する必要があります)。また、断片化やスペースのメンテナンスにあまり時間をかけたくないので、迅速に実装でき、将来的にさらに時間を費やす必要がないソリューションを探しています。

復元された本番バックアップでのテストは、再編成が断片化を減らしてスペースを取り戻すための再構築とほぼ同じであることを示しました。

これは合理的な考えですか?このスキームは、可用性または保守性の問題を引き起こしますか?これは合理的な長期的な解決策ですか?

5
usr

より良い方法があります-すべてのインデックスを毎晩再編成するだけでは、かなり無駄が多くなる可能性があります。 12%に断片化されているインデックスを再編成する必要があるのはなぜですか? 30 GBかかり、断片化を2%または3%しか削減しないのに、毎晩10GBインデックスを再編成するのはなぜですか?いずれにせよ、メモリ内に大部分または完全に存在するインデックスの再編成にどれだけの労力を費やす必要がありますか。ディスク領域を節約する必要がありますが、そのためにはインデックスをバッファから取り出す必要があります。これは、原因となるパフォーマンスヒットに見合う領域の節約です。 ?

これらの決定のいくつかを行うのに役立つ無料のスクリプトが世に出ており、デフォルトをオーバーライドするのは簡単です。

また、 SQL Sentry Fragmentation Manager と呼ばれるツール(無料ではありません)も用意されています。これは、完全な履歴レポート、再構築/再構築するインデックスのタイミングに関する幅広い詳細なルールとスケジュールを提供することで、これらよりもかなり進んでいます。 (サーバー全体から個々のインデックス、さらにはパーティションに至るまで)、同時操作のサポート(メンテナンスウィンドウが厳しい場合)、スケジュール用のドラッグアンドドロップカレンダー、および-Performance Advisorの一部であるため、正確な方法を評価する機能実行している作業はパフォーマンスに影響します。

免責事項(もちろん):私はSQL Sentryで働いています。

8
Aaron Bertrand