web-dev-qa-db-ja.com

SQL Serverでは、プライマリデータファイルグループをセカンダリデータファイルにいつ分割する必要がありますか?

現在、データベースには1つのファイルグループPRIMARYのみがあり、これには約8 GBのデータ(テーブル行、インデックス、フルテキストカタログ)が含まれています。

これを2次データファイルに分割する適切なタイミングはいつですか?知っておくべき基準は何ですか?

11
Jarrod Dixon

この質問には2つの部分があります。新しいFILEGROUPを追加するタイミングと、ファイルグループに新しいFILEを追加するタイミングです。最初に理論について話しましょう:

主な理由はパフォーマンスであるというマークの権利。

2番目の理由は、災害復旧です。 SQL Server 2005以降では、ファイルグループの復元を実行できます。災害が発生した場合は、最初にプライマリファイルグループのみを復元し、クエリのためにデータベースを部分的にオンラインにすることができます。ユーザーは、他のファイルグループを復元しているときにクエリを実行できます。これは、すぐには必要ない可能性がある履歴データが大量にあるデータベース、またはアクセスするために履歴データを必要とせずに現在のテーブルにデータをロードする必要があるデータウェアハウスに役立ちます。

別の理由は、データのグループの読み取り/書き込みプロファイルです。常に書き込まれているデータや、読み取りアクティビティが頻繁に発生するデータがある場合は、それらのニーズに対応するために、さまざまなタイプのストレージを構築できます。あなたはレイド10に重い書き込みのものを置き、安価なレイド5に読み取りバイアスのものを残すことができます。

ここで、ファイルグループとファイルグループについて話しましょう。 SQL Serverにオブジェクトを配置する場合、オブジェクトをファイルグループレベルに配置する必要があります。テーブルまたはインデックスをファイルグループに配置することはできますが、特定のファイルを選択することはできません。これまで説明してきたことはすべて、ファイルグループを追加するタイミングについてですが、ファイルを追加するのはいつですか。

ストレージを設計していて、80台のハードドライブがある場合、それを分割する方法はいくつかあります。

  • 80ドライブの1つのプール
  • 40ドライブの2つのプール
  • 20ドライブなどの4つのプール...

ストレージサブシステムが異なれば、パフォーマンスプロファイルも異なります。私は12〜16ドライブアレイで最高のパフォーマンスを発揮するSANをいくつか使用しましたが、それよりも大きいものではパフォーマンスは向上しませんでした。別の例は、マルチパスを備えたSANです。サーバーをストレージに接続している複数のHBAがあり、マルチパスソフトウェアが実際にアクティブ/アクティブでない場合、負荷を分散するためにパスごとに1つのアレイが必要になる場合があります。 4つのパス、4つのドライブプールは、これらのタイプのドライブでより良いパフォーマンスを実現します。

これらの場合、Windowsでは4つの異なるアレイ、4つの異なるドライブ(マウントポイントを使用しない限り、さらには異なるフォルダーでもある)になり、SQL Serverに4つの個別のファイルが必要になります。これらの個別のファイルは、同じファイルグループに含めることができます。

20
Brent Ozar

主な理由はパフォーマンスです。プライマリファイルグループのディスクドライブでIOPS容量が不足した場合、ストレージ構成に応じてIOPSを複数のディスク/ LUNに分割するには、2番目のファイルグループに拡張する必要があります。

編集:ブラッドウィルソンはSSDに関して良いコメントをしました。複合SSD/SATA/FCストレージシステムを使用している場合は、さまざまなタイプのストレージにさまざまなファイルグループを用意することをお勧めします。その後、極端なIOPS要件テーブルをSSD filegropusに配置できますが、履歴/統計テーブルは安価なSATAファイルグループに格納できます。

6

また、この質問にはリカバリ可能性/データ可用性の側面があることも指摘しておきます。複数のファイルグループを使用し、ユーザー定義のオブジェクトをプライマリファイルグループに配置しないことで、オンラインリストアをより柔軟に有効にすることができます。これにより、ファイルグループレベルで段階的に復元できます。

オンライン復元は、SQL ServerのEnterpriseおよびDeveloperエディションで2005年以降に利用可能です

頭に浮かぶもう1つの考えは、読み取り専用の静的参照データをトランザクションデータから分離することです。大規模なデータベースの場合、これにより、バックアップの実行に必要な時間および/またはスペースを削減できます。

1
Jason Horner