イベントがチューニングされない理由

このトピックでは、イベントがチューニングされない一般的な理由と、イベントのチューニングの対象となる適切なデータベースをデータベース エンジン チューニング アドバイザが選択する方法について説明します。

イベントがチューニングされない一般的な理由

イベントが最初に実行されたデータベースが正しく識別されていると仮定すると (次のセクションを参照)、次の場合はイベントがチューニングされません。

  • チューニング対象として選択されていないテーブルをイベントが参照している場合。

  • 10 ページ以下の非常に小さなテーブルをイベントが参照している場合。

注意注意

MicrosoftSQL Server 2000 のテーブルのページ数を調べるには、sysindexes システム テーブルの dpages 列を使用します。MicrosoftSQL Server 2005 以降のテーブルのページ数を調べるには、sys.dm_db_partition_stats カタログ ビューの used_page_count 列を使用します。

  • ユーザーが指定した時間内にデータベース エンジン チューニング アドバイザがクエリをチューニングするための十分な時間がない場合。

  • 最大数に近いインデックスが既にあるテーブルをイベントが参照しており、既存のインデックスを保持するオプションが選択されている場合。この場合、これらのテーブルにはインデックスを追加できません。

  • 多くのデータ操作言語 (DML) のステートメント (INSERT、UPDATE、および DELETE) が、イベントの基になるテーブルに対して実行されている場合。インデックスまたはインデックス付きビューをさらに追加すると、これらの基になるテーブルのパフォーマンスが低下します。

  • 次のチューニング オプションが指定されている場合。

    • 列の最大数が制限されている。

    • 保存用に指定されているディスク領域が小さすぎるか、データベース内に多くのインデックスおよびインデックス付きビューがあり、チューニング用に指定されているディスク領域が不十分である。

      注意注意

      データベース エンジン チューニング アドバイザのグラフィカル ユーザー インターフェイス (GUI) の [チューニング オプションの詳細設定] ダイアログ ボックスを使用するか、dta コマンド ライン ユーティリティの使用時に -B 引数の値を指定することによって、チューニング推奨設定のディスク領域制限を指定できます。

イベントのチューニングの対象となる適切なデータベースをデータベース エンジン チューニング アドバイザが選択する方法

使用するチューニング ワークロード ファイルの種類と、ワークロードのチューニング時に指定するオプションに応じて、データベース エンジン チューニング アドバイザはイベントのチューニングの対象となる適切なデータベースを次のように選択します。

SQL スクリプト (.sql) チューニング ワークロード ファイルの場合

  • 次のいずれかを使用してデータベース名を指定する場合

    • dta コマンド ライン ユーティリティの -d 引数

    • XML 入力ファイルの DatabaseToConnect 要素

    これらのオプションでは、チューニング セッションの開始時にデータベース エンジン チューニング アドバイザが最初に接続する既定のデータベースを設定します。その最初のデータベース接続後、データベース エンジン チューニング アドバイザはスクリプト内の各 USE database_name ステートメントを使用して、それ以降のステートメントのデータベース コンテキストを変更します。

  • チューニング セッションの最初のデータベース接続を明示的に指定しない場合、データベース エンジン チューニング アドバイザはチューニング対象のサーバーで指定したログイン用に定義されている既定のデータベースを使用します。その最初のデータベース接続後、データベース エンジン チューニング アドバイザは最初の接続を明示的に指定した場合と同じ方法で、それ以降のステートメントのデータベース コンテキストを変更します。データベース エンジン チューニング アドバイザは USE database_name ステートメントを使用してデータベース コンテキストを決定します。

トレース (.trc) チューニング ワークロード ファイルの場合

トレース ファイルを使用する場合、データベース エンジン チューニング アドバイザはトレースで指定された各サーバー プロセス ID (SPID) のイベントを実行するデータベースを選択します。トレースで SPID が指定されていないと、データベース エンジン チューニング アドバイザはそのトレースに含まれるすべてのイベントが同じ SPID であると見なします。データベース エンジン チューニング アドバイザは、各 SPID のデータベースを次のように選択します。

  1. DatabaseName がトレース内にある場合

    トレース ファイルに DatabaseName フィールドがある場合、データベース エンジン チューニング アドバイザはそのフィールドを使用して、イベント解析の対象となるデータベースを決定します。他の情報はすべて無視されます。DatabaseName フィールドがない場合、データベース エンジン チューニング アドバイザはステップ 2 に進みます。

  2. DatabaseID はトレース内にあるが、DatabaseName がない場合

トレース ファイルに DatabaseID フィールドがある場合、データベース エンジン チューニング アドバイザはそのフィールドを使用して、イベント解析の対象となるデータベースを決定します。DatabaseID フィールドはデータベース名にマップされます。ただし、データベース エンジン チューニング アドバイザは、トレースの収集以降に DatabaseID フィールドが変更されたかどうかを検証しません。DatabaseIDDatabaseName のマッピングが最新であるかどうか不明な場合は、トレース ワークロード ファイルから DatabaseID フィールドを削除します。他の情報はすべて無視されます。DatabaseName フィールドも DatabaseID フィールドもない場合、データベース エンジン チューニング アドバイザは手順 3. に進みます。

  1. トレースに DatabaseName DatabaseIDない場合

    トレースに DatabaseNameDatabaseID もない場合、データベース エンジン チューニング アドバイザは SQL スクリプト チューニング ワークロード ファイルの場合と同じ方法で、イベントを実行するデータベースを決定します。このプロセスについては、前のセクション「SQL スクリプト (.sql) チューニング ワークロード ファイルの場合」で説明しています。