web-dev-qa-db-ja.com

別のファイルグループに非クラスター化インデックスを自動的に保持する

DDLの作成時に、クラスター化インデックスAを1つのファイルグループに自動的に移動し、すべての非クラスター化インデックスを別のファイルグループBに自動的に移動する方法はありますか?開発者は常にテーブル/インデックスを作成しており、開発環境でこれを自動化する方法が必要です。私たちのDBAによると、古いSANハードドライブがあり、場合によっては、異なるファイルグループのインデックスを分離するとパフォーマンスが最適化されることがあります。

https://docs.Microsoft.com/en-us/sql/relational-databases/databases/database-files-and-filegroups?view=sql-server-2017

1
user172193

クラスタ化インデックスは、適切に配置されたテーブルです。ヒープ上にクラスター化インデックスを作成すると、キー列に基づいてテーブルのデータが配置されます。したがって、クラスター化インデックスを移動すると、テーブルを別のファイルグループに移動することになります。

SQL Serverには、インデックスの作成時に特定のファイルグループにインデックスを自動的に移動する組み込みの機能はありません。代わりに、インデックスの種類に基づいてインデックスを特定のファイルグループに移動するインデックスメンテナンススクリプトを記述できます。そうでない場合、ファイルグループを指定する必要がありますインデックスを作成します。

また、このリンクは役立ちます https://stackoverflow.com/questions/55187160/automatically-create-indexes-in-different-filegroup-edit-publish-profile-script

2
Rajesh Ranjan

以前の回答で述べたように、非クラスター化インデックスを別のファイルグループに作成する組み込みの機能はありませんが、インデックス専用に複数のファイルグループを作成し、特定の基準(サイズ、頻度、使用。LUNなど)。すべてのインデックスが一度に移動されるので、最初に時間のかかるタスクですが、後で週に(週末に)タスクをスケジュールして、新しく作成されたインデックスをインデックスファイルグループに移動できます。これにより、すべての非クラスター化インデックスとテーブルが別のファイルグループにあることが保証されます。

非クラスタ化インデックスの移動に関するスクリプトに関する限り、これは article だけでなく、これも参照できます one 。 Rajesh氏がすでに強調したように、クラスター化インデックスには個別のストレージがないため、クラスター化インデックスの移動はテーブル自体の移動と同じくらい効果的です。

1