PROD環境でインデックス最適化のためにOlaHallengrensコードをデプロイしようとしています。
以下のコードの@Databasesの代わりにSER_DATABASESとAVAILABILITY_GROUP_DATABASESを使用することの違いは何ですか。
また、私はブログを読んで読んでいました:
インデックス最適化のOlaHallengrensコードは、ページ数が1000を超える場合にのみ最適化することを目的としています。
以下のコマンドを実行すると、統計のみが更新され、インデックスは再構築されません-
これは、エンドユーザーがデータベースエンドからの応答の遅さやパフォーマンスの低下について何も不満を言っていないので、断片化が得意であることを意味しますか?.
EXECUTE dbo.IndexOptimize
@Databases = '',
@FragmentationLow = NULL,
@FragmentationMedium = 'INDEX_REORGANIZE,INDEX_REBUILD_ONLINE',
@FragmentationHigh = 'INDEX_REBUILD_ONLINE',
@FragmentationLevel1 = 5,
@FragmentationLevel2 = 30
user_databasesとavailability_group_databasesの違いは、user_databasesを指定するときに、everyを最適化することです。 )ユーザーデータベース(AGグループのデータベースも)availability_group_databasesを指定すると、のみ内のデータベースのインデックスが最適化されます。可用性グループ。
1000ページを超える断片化のあるテーブルがない場合、これによってSQLServerのパフォーマンスが低下することはありません。ブレントオザールからのこの投稿も読むことをお勧めします。 https://www.brentozar.com/archive/2012/08/sql-server-index-fragmentation/
ドキュメントをざっと見てみると、USER_DATABASES
とAVAILABILITY_GROUP_DATABASES
の良い例があります。
データベース
データベースを選択します。キーワードSYSTEM_DATABASES、USER_DATABASES、ALL_DATABASES、およびAVAILABILITY_GROUP_DATABASESがサポートされています。ハイフン文字(-)はデータベースを除外するために使用され、パーセント文字(%)はワイルドカードの選択に使用されます。これらの操作はすべて、コンマ(、)を使用して組み合わせることができます。
Value Description ---------------------------------------------- -------------------------------------------------------- SYSTEM_DATABASES All system databases (master, msdb, and model) USER_DATABASES All user databases` ALL_DATABASES All databases` AVAILABILITY_GROUP_DATABASES All databases in availability groups USER_DATABASES, -AVAILABILITY_GROUP_DATABASES All user databases that are not in availability groups Db1 The database Db1 Db1, Db2 The databases Db1 and Db2 USER_DATABASES, -Db1 All user databases, except Db1 `%Db% All databases that have “Db” in the name %Db%, -Db1 All databases that have “Db” in the name, except Db1 ALL_DATABASES, -%Db% All databases that do not have “Db” in the name
正しく指摘したように、インデックスの最適化は特定のレベルでトリガーされます。
要件やデータのサイズによっては、一部のインデックスを早期に再編成する必要がある場合があります。
2億レコード(オンラインアーカイブ)のテーブルがあり、毎日10,000レコードが変更され、毎日10,000レコードが作成されます。簡単な計算を行うと、最大0.01%の断片化が発生し、インデックスの再編成や再構築がトリガーされることはありません。 5%の断片化に達するには500日かかります。実稼働環境では、関連するテーブルのサイズとクエリの複雑さによっては、パフォーマンスの問題が発生する可能性があります。
はい、上記の制限がありますが、断片化には適しています。