web-dev-qa-db-ja.com

データベースエンジンチューニングアドバイザーの使用-推奨事項のスクリプトを生成するにはどうすればよいですか?

サーバー側のプロファイルトレース を1時間以上実行して、データベースの1つにすべてのアクティビティを含む.trcファイルを生成しました。

次に、この.trcトレースファイルをパラメーターとしてデータベースエンジンチューニングアドバイザーに渡しました。

enter image description here

DTAを実行した後、推奨事項を取得します。

enter image description here 推奨事項をスクリプト化するにはどうすればよいですか?

私は SQL Server 2005 を使用していますが、個別にスクリプトを作成する以外に方法がなく、時間がかかりすぎます。

2

View Tuning Output を確認します。

  1. この推奨事項のすべてのデータベースオブジェクトを作成または削除するすべてのTransact-SQLスクリプトを1つのスクリプトファイルに保存する場合は、[アクション]メニューの[Save Recommendations]をクリックします

いつものようにレビューとテストブラインドで適用する の前の推奨事項をPROD環境に推奨します。

sp_BlitzIndexBrentOzar.com の人々からのようなより健全なツールを見ることを強くお勧めします。

8
Kin Shah

「ミッシングインデックス」のリストを生成するコンピュータを丸ごと飲み込むべきではないことに注意してください。作成するインデックス、既存のインデックスの複製に近い推奨インデックス、およびこれらの問題の処理方法を決定する必要があります。

生成された推奨事項は、使用する前に真剣な検討が必要なので、決定を下す必要があります。

Bart Duncanは、インデックスに動的管理ビュー(DMV)を使用して、「欠落しているインデックス」をリストするスクリプトを作成しました。これは、データベースエンジンチューニングアドバイザー(DTA)とまったく同じではありませんが、価値があります。

健全性チェックの「欠落したインデックス」に関するDTAとDMVの推奨事項を比較することをお勧めします。

Bart Duncanのクエリは、推奨インデックスを作成する場合に使用されるコードを生成します。 (読みやすくするために少し再フォーマットしました。)

SELECT 
  migs.avg_total_user_cost * (migs.avg_user_impact / 100.0) * 
  (migs.user_seeks + migs.user_scans) AS improvement_measure, 
  'CREATE INDEX [missing_index_' + 
   CONVERT (varchar, mig.index_group_handle) + '_' + 
   CONVERT (varchar, mid.index_handle) +
   '_' + LEFT (PARSENAME(mid.statement, 1), 32) + ']'
  + ' ON ' + mid.statement 
  + ' (' + ISNULL (mid.equality_columns,'') 
    + CASE WHEN mid.equality_columns IS NOT NULL AND 
      mid.inequality_columns IS NOT NULL THEN ',' ELSE '' END 
    + ISNULL (mid.inequality_columns, '')
  + ')' 
  + ISNULL (' INCLUDE (' + mid.included_columns + ')', '') AS create_index_statement, 
  migs.*, mid.database_id, mid.[object_id]
FROM sys.dm_db_missing_index_groups mig
INNER JOIN sys.dm_db_missing_index_group_stats migs 
      ON migs.group_handle = mig.index_group_handle
INNER JOIN sys.dm_db_missing_index_details mid 
      ON mig.index_handle = mid.index_handle
WHERE migs.avg_total_user_cost * (migs.avg_user_impact / 100.0) *
     (migs.user_seeks + migs.user_scans) > 10
ORDER BY migs.avg_total_user_cost * migs.avg_user_impact * 
         (migs.user_seeks + migs.user_scans) DESC

おそらく、DTA推奨事項の多くは、欠落しているインデックスクエリに含まれています。それがうまくいくと、必要なスクリプトが手に入ります。 DMV勧告に含まれていないDTAからのすべては、手動でコーディングできます。

4
RLF