データベースをさまざまなファイルグループに分割する決定は、テーブルの現在のサイズと将来の成長を分析した後に行う必要があります。私の意見では、大規模なデータベースまたは数百万行のテーブルがない限り、長所と短所を慎重に検討する必要があります。
特定の前提の下で興味深いいくつかのシナリオがあります。
- 2つのファイルグループ:データとインデックス
- 3つのファイルグループ:読み取り専用テーブル、読み取り/書き込みテーブル、インデックス
- 複数のファイルグループ:読み取り専用、読み取り/書き込み、インデックス、キーテーブル1、キーテーブル2、...
環境を分析して、ファイルグループがSQL Serverの成長、使用、およびパフォーマンスのニーズに役立つかどうかを判断する必要があります。
複数のファイルグループに移動するためのいくつかの重要なインジケーター(この記事から):
- ディスクキューがアプリケーションとユーザーエクスペリエンスの問題を引き起こしているとき
- この場合、IO集約型テーブルを格納する新しいファイルグループで追加のディスクドライブを活用することを検討してください。
- 特定のテーブルがデータベースの10%以上の場合
- この場合、これらの特に大きなテーブルを、個別の基盤ディスクドライブ上の個別のファイルグループに移動することを検討してください。
- 残りのテーブルに比例したテーブルサイズに応じて、個々のテーブルのファイルグループの構築を検討します。
- 大きなテーブルで非クラスター化インデックスとデータスペースが等しい場合
- この場合、非クラスター化インデックスからデータとクラスター化インデックスを分割することを検討してください
- ほぼ等しい割合の読み取り専用データと読み取り/書き込みデータがデータベースに存在する場合
- この場合、読み取り専用データを読み取り/書き込みデータとして別のファイルグループに分割することを検討してください。
- データベースのメンテナンスを実行するのに十分な時間がない場合
- この場合は、大きなテーブルを異なる基になるディスク上の個別のファイルグループに分割し、並行してメンテナンスを実行することを検討してください。
- ビジネスまたはアプリケーションが大幅に変化し、データがはるかに高い速度で成長する場合
- この場合、潜在的な成長を理解するためにユーザーと協力することを検討してください
- アーカイブされたデータが本番データと同じデータベースにある場合
- この場合は、個別のファイルグループ、またはこのヒント-SQL Serverでのデータのアーカイブの1つ以上の手法を検討してください。
ファイルグループによってデータベースのパフォーマンスが向上する場合は、運用サーバーに変更を実装する前に、コードを記述し、ステージング環境でプロセスをテストします。変更を実装する前にいくつかの測定値を準備し、それらを前後に比較します。これらのプロセスは非常にリソースを消費し、時間がかかるため、メンテナンス期間中にこれらの手順を実行してください。
新しいオブジェクト(テーブルとインデックス)を作成するときは、オブジェクトが正しいファイルグループに作成されることを忘れないでください。期待されるパフォーマンスを確保し、データベースオブジェクトが正しいファイルグループにあり、必要に応じて修正されることを定期的に検証してください。