web-dev-qa-db-ja.com

デフラグ-インデックスの再構築SQL Server 2005

データベースの最適化を調査していますが、探しているのは次のSQLステートメントのようです。

ALTER INDEX ALL ON mytablename
REBUILD WITH(ONLINE = ON)

sys.dm_db_index_physical_stats、パーセントが非常に高いことがわかります-70、80、および90パーセント(!)。つまり、REBUILDではなくREORGANIZEが必要だということがわかります。

これらを実行する前にいくつか質問がありますREBUILDS

  1. プロセスがデータベースを使用しているときに実行できますか? (ONLINE = ONは「はい」と伝えますが、何もクラッシュしないことを確認したいと思います。)または、使用していないときに実行した方がよいですか?
  2. REBUILDを読むと、動作が遅くなります。インデックスが再構築されている最中ですか? (またはずっと後)
  3. すべてのインデックス、またはそれぞれのインデックスを再構築するにはどのくらい時間がかかりますか?
  4. 知っておく必要がある副作用やその他の情報はありますか?これは本番/ライブデータベースです。

編集:そして最後に、それを再構築するための最善の方法は何ですか? 30を超えるパーセンテージですべてのオブジェクトをループしますか?それとも?

ありがとうございました!

7
Rivka
  1. はい、データベースがアクティブなユーザーとオンラインの間に再構築できます。可能であれば、オフピークで実行することをお勧めします。
  2. 再構築中、クエリの実行速度は遅くなりますが、これは主に、インデックスの再構築によるI/Oオーバーヘッドが原因です。これがどの程度目立つかは、システムの仕様によって異なります。パフォーマンスの低下は、再構築中のみに発生します。
  3. この場合も、再構築の期間は、特定のセットアップによって異なります。これを同等の開発サーバーまたはステージングサーバーで実行してみてください。
  4. 他の関連する副作用はありません。再構築が完了すると、通常どおりバックアップおよび実行されます。
7
Yuck

Olaのインデックスメンテナンススクリプト もご覧になることを強くお勧めします。ホイールを再作成する理由はありません。その非常に柔軟なスクリプトとコミュニティの多くのDBAがそれを使用し、推奨しています。

4
JohnS