SQL Server:システムテーブルのみのファイルグループ?


11

私たちの企業標準の1つは、ユーザーテーブル/インデックス用に個別のファイルグループ/ファイルを用意することです。これはデフォルトとして設定されているため、CREATE TABLEステートメントを修飾する必要はありません。

だからこんな感じ

  • fileid 1 =システムテーブル、MDF
  • fileid 2 = t-log = LDF
  • fileid 3 =ユーザーのもの= NDF

なぜこれが義務付けられたのか、元の正当性を理解するのを手伝ってくれる人はいますか?


私はそれがブードゥー教だと思う状態できれいに来ます。私間違っていますか...?

編集:インデックス/パーティション/アーカイブを分離するためにファイルグループを使用する方法と、断片的に復元する方法を知っています。この質問は、システムテーブル専用の同じボリューム上の別のファイルグループの使用についてです。

回答:


9

Microsoftの70-432トレーニングブックには、「プライマリファイルグループにオブジェクトを配置しない主な理由は、I / Oをできるだけ分離するためです。システムオブジェクトのデータは、データほど頻繁には変更されません。オブジェクト内にあります。プライマリデータファイルへの書き込みアクティビティを最小限に抑えることで、ハードウェア障害による破損の可能性を低減します。さらに、プライマリファイルグループの状態によってデータベースの状態も決まるため、可用性を高めることができます。データベースのプライマリファイルグループに加えられた変更を最小限に抑えます。」

だから、あなたがそうするようにそれを取りなさい。他の人は、これは特定の状況では必要なく、もちろん維持する方がよいと言います。私はマイクロソフトの推論を提供すると思いました。


合理的で、そのための正当な理由が書かれています。私はこれを受け入れます
gbn

1
もう1つの理由は、PARTIALデータベースの復元により、PRIMARYファイルグループと選択した他のファイルグループの復元が可能になり、正しく設計されたVLDBをより迅速に回復できるようになるためです。アーカイブ/セカンダリファイルグループを後で復元できるようにする。
MartinC

@MartinC:部分的な復元などについては知っていますが、システムテーブルを明示的に分離するロジックを理解していません。パフォーマンス、アーカイブ、メンテナンス、パーティショニングなどのファイルグループ。ただし、システムテーブルはどうでしょうか。ジャレッドは...今のところ最良の説明を提供
GBN

データベース全体が非常に大きい場合、プライマリファイルグループには、メインデータよりも定期的なバックアップを作成できます。復元では、ファイルグループのバックアップと末尾に加えて、テールログのバックアップとプライマリファイルグループとトランザクションログの復元のみが必要です。システムテーブルが小さいため、データベース全体に対してこれを実行するよりも、回復プロセスが迅速になるため、問題が発生した場合のダウンタイムを短縮できます。
MartinC、2012

12

これはパフォーマンスの向上ではありませんが、回復可能なゲインがあります。システムテーブルでファイルの破損が発生した場合、データベースは失われます。ユーザーデータを別のファイルグループ(または複数のグループ)に保持している場合は、復元中にデータベースの残りの部分をオンラインに維持したまま、それらのファイルのみを復元できます(ここではEnterprise Editionを想定しています)。

これが彼らがこれを述べている理由である場合、私は言うことはできませんが、これは、PRIMARYファイルグループ内のシステムオブジェクトのみを含む複数のファイルグループを持つことの利点です。

ただし、AutoShrinkを有効にする必要があると言ってジャンクを蹴る必要があります。


この詳細については、Books Onlineでオンラインの段階的な部分復元を検索してください。
ブレントオザー

1
2つのファイルグループが(SAN上の)同じボリューム上にあることを考えると、これもブードゥー教だといつも思っていました。腐敗のリスクはそれほど高いですか?(実際の運用DBAはAutoShrinkをfalseに設定しています)
gbn '21

破損がある場合は、ページがディスクに書き込まれるとストレージが起動するため、単一ファイル内の単一ページになります。データベースの破損の99.9999%のようなものは、ストレージの問題です。問題の残りの半分はメモリ不良であり、残りはSQLのバグです。データベースが大きくなる(マルチTB)と、マルチTBデータベースの復元に数日かかるため、これはより重要になります。
mrdenny

システムオブジェクトがプライマリファイルグループのみにある場合、将来必要になる場合は、次のことを実行できると思うのは正しくありません。別のファイルグループにx個の追加ファイルを作成します。既存のデータファイルからデータを移行して、これらのファイルを比例的に埋めますか?
アリーライリー

4

よくわかりませんが、あなたの会社の基準を正当化する人を求めていますか?あなたの会社の標準化文書を書いた人なら誰でも、なぜこれが行われるのかについてある程度の光を当てることができると思います。

とはいえ、システムデータをユーザーデータから分解したいと考える店も珍しくありません。また、ディスクの専用セットと組み合わせて使用​​すると、パフォーマンスが向上する可能性があります。


ありがとう。正当化するのではなく、説明してください。これは、AutoShrinkをオンにするDBエンジニアリングチームと同じです。システムテーブルが数MBを占め、とにかくメモリ内にある場合、パフォーマンスの向上を信じますか?
GBN、2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.