インデックスメンテナンス用のOlaスクリプトは、小規模なデータベースで非常にうまく機能します。インデックスが大きく、パーティションが多く、スケジュール時間の間隔が短いマルチテラバイトのデータベースの場合、スクリプトは常に同じインデックスを再構築する傾向があり、終了しないことがわかりました。
ソリューションを実装して、特定の日数の間インデックス最適化をキャプチャして実行し、リセットするにはどうすればよいですか。複数のスレッドで実行することもできますか?
私たちはそれを達成するためのソリューションを開発しましたが、私たちが抱えている唯一の問題は定期的に更新することです。
大きなインデックス、多くのパーティション、およびスケジュール時間の間隔が短いマルチテラバイトのデータベースの場合、スクリプトは常に同じインデックスを再構築する傾向があり、終了しないことがわかりました。
これはVLDBでは非常に一般的です。あなたは少し散らかっていて、従うことができます PaulRandalのVLDBメンテナンスのベストプラクティスのクイックリスト 。 Enterpriseエディションでは、インデックスをオンラインで再構築できます。
あなたの場合、Olaのインデックス最適化スクリプトを使用しているので、 CommandLog
テーブルを分析することで解決できる無限のインデックスの最適化 に遭遇しています。
インデックスを毎週再構築するのは良い考えですか? maxdopオプションについてもう少し考えました。
データベースが非常に大きい(TBサイズ)場合は、統計を再構築して手動で更新する代わりに、少なくとも再編成を行ってください。これにより、再編成が強制終了された場所から開始されるため、適切な状態になります。
並列スレッドで実行する場合は、commandLog
テーブルを駆動し、PowerShell実行スペースを使用できます(多くのスレッドを生成しないように注意してください--- 実行スペースの使用に関する注意事項を参照 )。