イベントがチューニングされない理由
このトピックでは、イベントがチューニングされない一般的な理由と、イベントのチューニングの対象となる適切なデータベースをデータベース エンジン チューニング アドバイザが選択する方法について説明します。
イベントがチューニングされない一般的な理由
イベントが最初に実行されたデータベースが正しく識別されていると仮定すると (次のセクションを参照)、次の場合はイベントがチューニングされません。
- チューニング対象として選択されていないテーブルをイベントが参照している場合。
- 10 ページ以下の非常に小さなテーブルをイベントが参照している場合。
メモ : |
---|
Microsoft SQL Server 2000 のテーブルのページ数を調べるには、sysindexes システム テーブルの dpages 列を使用します。Microsoft SQL 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 のデータベースを次のように選択します。
- DatabaseName がトレースにある場合
トレース ファイルに DatabaseName フィールドがある場合、データベース エンジン チューニング アドバイザはそのフィールドを使用して、イベント解析の対象となるデータベースを決定します。他の情報はすべて無視されます。DatabaseName フィールドがない場合、データベース エンジン チューニング アドバイザはステップ 2 に進みます。 - DatabaseID はトレースにあるが、DatabaseName がない場合
トレース ファイルに DatabaseID フィールドがある場合、データベース エンジン チューニング アドバイザはそのフィールドを使用して、イベント解析の対象となるデータベースを決定します。DatabaseID フィールドはデータベース名にマップされます。ただし、データベース エンジン チューニング アドバイザは、トレースの収集以降に DatabaseID フィールドが変更されたかどうかを検証しません。DatabaseID と DatabaseName のマッピングが最新であるかどうか不明な場合は、トレース ワークロード ファイルから DatabaseID フィールドを削除します。他の情報はすべて無視されます。DatabaseName フィールドも DatabaseID フィールドもない場合、データベース エンジン チューニング アドバイザは手順 3. に進みます。
- トレースにDatabaseNameもDatabaseIDもない場合
トレースに DatabaseName も DatabaseID もない場合、データベース エンジン チューニング アドバイザは SQL スクリプト チューニング ワークロード ファイルの場合と同じ方法で、イベントを実行するデータベースを決定します。このプロセスについては、前のセクション「SQL スクリプト (.sql) チューニング ワークロード ファイルの場合」で説明しています。