web-dev-qa-db-ja.com

どのシステムデータベースをチェックしてインデックスをデフラグする必要がありますか?

定期的にCHECKDBを実行するSQL Serverエージェント(2005)ジョブと、高度にフラグメント化されたインデックスのデフラグ(ALTER INDEX REORGANIZE/REBUILD)があります。これらは、一般的なメンテナンスのベストプラクティスです。これらのジョブを適用する必要があるシステムデータベースはどれですか。現在、CHECKDBはマスター上でのみ実行しています。どこかで本で見たので、漠然と設定したことを覚えています。

それでは、CHECKDBやインデックスデフラグを実行する必要があるのは次のうちどれですか。

  • 主人
  • モデル
  • msdb
  • tempdb
4
SFun28

私の考えでは、一般的なcheckdbは本当にmasterとmsdbにのみ適用されます。モデルやtempdbに揮発性データを入れるべきではありません(Kinはtempdbの破損に関する優れた記事を指摘しています。より新しいバージョンのSQL Serverに移行する場合は、それほど問題にはなりません)。 tempdbに対してこれを日常的に行うことはありませんが、実際に破損のレポートを受け取った場合にのみ対処します。私見では。すべての新しいデータベースで作成されるようにモデルにユーザーオブジェクトを追加した場合、そこにリスクが高まる可能性があるため、それを含めることができます。通常、それはかなり小さいので、とにかくそれを含めることは本当に害にはなりません。

デフラグの場合、ここで心配する必要があるデータベースはMSDBだけです(特に、バックアップ履歴とジョブ履歴のテーブルがチェックされていない場合)。ユーザーテーブルをそこに配置した場合、マスターが候補になりますが、最適化を試みるよりも、それらを完全に削除して修正したいと思います。上記のように、モデルのデータを頻繁に変更するべきではなく、tempdbにも永続的なオブジェクトを含めないでください。そのため、最適化を行うと、無駄または偽り、あるいはその両方になります。

4
Aaron Bertrand

すべてのシステムデータベースとユーザーデータベースは、CHECKDBを使用してチェックする必要があります。 tempdbのスナップショットを生成できず、内部でcheckdbがDBスナップショットを生成するため、唯一の例外はtempdbです。

私たち[〜#〜] all [〜#〜]は、それが再作成されることを知っているので、注意が必要な部分はtempdb(Tempdbが破損している場合)です。 SQL Serverの再起動は完了しましたがbutTempdbファイルはSQL Serverを再起動しても削除されず、0(ゼロ)でも初期化されないため、破損が持続する可能性があります。

Tempdbの破損(これはまれですが、SQL Serverのバグが原因である可能性が高いです)について説明します ここ

4
Kin Shah

ネイティブのWindowsツールを使用してデフラグを実行すると、問題が発生する可能性があります。マスター、msdb、およびモデルのcheckdbを使用します。 Tempdbは起動時に再作成されます。マスターdbは重要です。モデルが破損した場合、新しいDBを作成することは困難ですが、高度にカスタマイズしてバックアップしなかった場合を除き、簡単に再作成できます。モデルを変更しない場合は、適切なバックアップがあることを確認してください。

1
Ali Razeghi