dta ユーティリティ
dta ユーティリティは、データベース エンジン チューニング アドバイザーのコマンド プロンプト バージョンです。dta ユーティリティは、データベース エンジン チューニング アドバイザーの機能をアプリケーションとスクリプトで使用するために作成されました。
データベース エンジン チューニング アドバイザーと同様に、dta ユーティリティは、ワークロードを分析し、ワークロードに対するサーバー パフォーマンスを向上させるための物理デザイン構造を提示します。ワークロードには、SQL Server Profiler のトレース ファイルやトレース テーブル、あるいは Transact-SQL スクリプトを指定できます。物理デザイン構造には、インデックス、インデックス付きビュー、およびパーティション分割が含まれます。ワークロードの分析後、dta ユーティリティによってデータベースの物理デザインに対する推奨設定が作成され、推奨設定を実装するための必要なスクリプトを生成することができます。ワークロードは、-if 引数または -it 引数を使用してコマンド プロンプトから指定できます。-ix 引数を使用して、コマンド プロンプトから XML 入力ファイルを指定することもできます。その場合、ワークロードは XML 入力ファイルで指定します。
構文
dta
[ -? ] |
[
[ -S server_name[ \instance ] ]
{
{ -U login_id [-P password ] }
| –E }
{ -D database_name [ ,...n ] }
[-d database_name ]
[ -Tl table_list | -Tf table_list_file ]
{ -if workload_file | -it workload_trace_table_name }
{ -ssession_name | -IDsession_ID }
[ -F ]
[ -of output_script_file_name ]
[ -or output_xml_report_file_name ]
[ -ox output_XML_file_name ]
[ -rl analysis_report_list [ ,...n ] ]
[ -ix input_XML_file_name ]
[ -A time_for_tuning_in_minutes ]
[ -n number_of_events ]
[ -m minimum_improvement ]
[ -fa physical_design_structures_to_add ]
[ -fi ]
[ -fp partitioning_strategy ]
[ -fk keep_existing_option ]
[ -fx drop_only_mode ]
[ -B storage_size ]
[ -c max_key_columns_in_index ]
[ -C max_columns_in_index ]
[ -e | -e tuning_log_name ]
[ -N online_option]
[ -q ]
[ -u ]
[ -x ]
[ -a ]
]
引数
-?
使用方法についての情報を表示します。-Atime_for_tuning_in_minutes
チューニングの制限時間を分単位で指定します。dta は、指定された時間を使用してワークロードをチューニングし、推奨される物理デザインに変更するスクリプトを生成します。既定では、dta のチューニング時間は 8 時間になります。0を指定すると、チューニング時間は無制限になります。dta では、制限時間に達する前にワークロード全体のチューニングを終了する場合があります。ワークロード全体を確実にチューニングするためには、チューニング時間を無制限に指定 (-A 0) することをお勧めします。-a
ワークロードをチューニングし、確認のプロンプトを表示せずに推奨設定を適用します。-Bstorage_size
推奨されるインデックスとパーティション分割で使用できる最大容量を MB 単位で指定します。複数のデータベースをチューニングする場合、すべてのデータベースに対する推奨設定は容量計算から判断されます。既定では、dta によって、次のストレージ サイズより小さいサイズが想定されます。データベース内のテーブル上にある、ヒープおよびクラスター化インデックスの合計サイズを含む、現在の生データ サイズの 3 倍。
アタッチされたすべてのディスク ドライブの空き領域と生データ サイズの合計。
既定のストレージのサイズには、非クラスター化インデックスとインデックス付きビューは含まれません。
-Cmax_columns_in_index
dta が提示する、インデックス内に含まれる列の最大数を指定します。最大値は SQL Server のバージョンにより異なります。SQL Server 2000 の最大値は 16 で、SQL Server 2005 および SQL Server 2008 の最大値は 1024 です。既定では、この引数は 16 に設定されています。-cmax_key_columns_in_index
dta が提示する、インデックス内に含まれるキー列の最大数を指定します。既定値は 16 (許可される最大値) です。この引数は SQL Server 2005 および SQL Server 2008 にのみ適用されます。dta では、付加列を使用して作成されるインデックスも考慮されます。付加列を使用するインデックス推奨設定は、この引数で指定される列数を超える場合があります。-Ddatabase_name
チューニングする各データベースの名前を指定します。最初のデータベースは既定のデータベースです。データベース名をコンマで区切り、複数のデータベースを指定することができます。次に例を示します。dta –D database_name1, database_name2...
または、データベース名ごとに -D 引数を使って、複数のデータベースを指定することもできます。次に例を示します。
dta –D database_name1 -D database_name2... n
-D 引数は必須です。-d 引数が指定されていない場合、dta は、ワークロードの最初の USE database_name 句で指定されるデータベースへ最初に接続します。ワークロードに明示的な USE database_name 句がない場合、-d 引数を使用する必要があります。
たとえば、明示的な USE database_name 句を含まないワークロードで、次のような dta コマンドを使用する場合、推奨設定は生成されません。
dta -D db_name1, db_name2...
しかし、同じワークロードを使用して、-d 引数を持つ次のような dta コマンドを使用すると、推奨設定が生成されます。
dta -D db_name1, db_name2 -d db_name1
-ddatabase_name
ワークロードをチューニングするときに、dta が接続する最初のデータベースを指定します。この引数で指定できるデータベースは 1 つだけです。次に例を示します。dta -d adventureworks2008R2 ...
複数のデータベース名を指定すると、dta はエラーを返します。-d 引数は省略可能です。
XML 入力ファイルを使用している場合、TuningOptions 要素の下にある DatabaseToConnect 要素を使用して、dta が接続する最初のデータベースを指定できます。詳細については、「XML 入力ファイル リファレンス (データベース エンジン チューニング アドバイザ)」を参照してください。
データベースを 1 つだけチューニングする場合、-d 引数は sqlcmd ユーティリティの -d 引数と同様の機能を提供しますが、USE database_name ステートメントは実行しません。詳細については、「sqlcmd ユーティリティ」を参照してください。
-E
パスワードを要求せずに、信頼関係接続を使用します。ログイン ID を指定する -E 引数または -U 引数のどちらかを使用する必要があります。-etuning_log_name
dta がチューニングできなかったイベントが記録されるテーブル名またはファイル名を指定します。このテーブルは、チューニングが行われるサーバー上に作成されます。テーブルを使用する場合、[database_name].[owner_name].table_name の形式で名前を指定します。次の表は、各パラメーターの既定値を示しています。
パラメーター
既定値
database_name
-D オプションで指定した database_name
owner_name
dbo
注owner_name は必ず dbo としてください。それ以外の値が指定されると、dta の実行は失敗し、エラーが返されます。table_name
なし
ファイルを使用する場合、拡張子として .xml を指定します。たとえば、TuningLog.xml です。
注 dta ユーティリティは、セッションを削除する場合に、ユーザー指定のチューニング ログ テーブルの内容を削除しません。大量のワークロードをチューニングするときは、テーブルをチューニング ログ専用にすることを推奨します。大量のワークロードをチューニングすると、チューニング ログが大きくなり、テーブルが急速に消費され、セッションが削除される可能性があります。
-F
既存の出力ファイルの上書きを dta に許可します。同じ名前の出力ファイルが既に存在し、-F が指定されていない場合、dtaはエラーを返します。-F と共に -of、-or、または -ox を使用できます。-faphysical_design_structures_to_add
dta で推奨設定の対象となる、物理デザイン構造の種類を指定します。次の表は、この引数で指定できる値の一覧と説明です。値を指定しないと、dta では既定の -faIDX が使用されます。値
説明
IDX_IV
インデックスおよびインデックス付きビュー。このチューニング オプションがサポートされていない SQL Server のバージョンについては、「サポートされていないチューニング オプション」を参照してください。
IDX
インデックスのみ。
IV
インデックス付きビューのみ。このチューニング オプションがサポートされていない SQL Server のバージョンについては、「サポートされていないチューニング オプション」を参照してください。
NCL_IDX
非クラスター化インデックスのみ。
-fi
フィルター選択されたインデックスが新しい推奨設定用と見なされるように指定します。詳細については、「フィルター選択されたインデックスのデザイン ガイドライン」を参照してください。-fkkeep_existing_option
推奨設定を生成するとき、dta が保持する必要のある既存の物理デザイン構造を指定します。次の表は、この引数で指定できる値の一覧と説明です。
<div class="caption">
</div>
<div class="tableSection">
<table>
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<thead>
<tr class="header">
<th><p>値</p></th>
<th><p>説明</p></th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>NONE</p></td>
<td><p>既存の構造なし</p></td>
</tr>
<tr class="even">
<td><p>ALL</p></td>
<td><p>既存のすべての構造</p></td>
</tr>
<tr class="odd">
<td><p>ALIGNED</p></td>
<td><p>パーティション分割されたすべての構造</p></td>
</tr>
<tr class="even">
<td><p>CL_IDX</p></td>
<td><p>テーブル上にあるクラスター化されたすべてのインデックス</p></td>
</tr>
<tr class="odd">
<td><p>IDX</p></td>
<td><p>テーブル上にある、クラスター化されたすべてのインデックスおよびすべての非クラスター化インデックス</p></td>
</tr>
</tbody>
</table>
</div>
-fppartitioning_strategy
dta によって提示される新しい物理デザイン構造 (インデックスおよびインデックス付きビュー) をパーティション分割するかどうか、およびパーティション分割の方法を指定します。次の表は、この引数で指定できる値の一覧と説明です。値
説明
NONE
パーティション分割しない。
FULL
完全パーティション分割 (選択するとパフォーマンスが向上します)。
ALIGNED
固定パーティション分割 (選択すると管理機能が強化されます)。
ALIGNED は、dta によって生成された推奨設定では、提示されるインデックスのすべてがパーティション分割されることを意味します。そのパーティション分割は、インデックス定義の基になるテーブルとまったく同じ方法で行われます。インデックス付きビューの非クラスター化インデックスは、インデックス付きビューに準じます。この引数で指定できる値は 1 つだけです。既定値は、-fpNONE です。
-fxdrop_only_mode
dta では、既存の物理デザイン構造の削除のみが考慮されます。新しい物理デザイン構造は考慮されません。このオプションを指定すると、dta では既存の物理デザイン構造の使用度が評価され、ほとんど使用されない構造の削除が推奨されます。この引数は値を取りません。この引数は、-fa、-fp、および -fk ALL と同時に使用することはできません。-IDsession_ID
チューニング セッションの識別子を数値で指定します。指定しない場合、dta では ID 番号が生成されます。この識別子を使用して、既存のチューニング セッションの情報を表示することができます。-ID に値を指定しない場合は、セッション名を -s で指定する必要があります。-ifworkload_file
チューニングの入力として使用するワークロード ファイルのパスとファイルの名前を指定します。ファイルは、.trc (SQL Server Profiler トレース ファイル)、.sql (SQL ファイル)、.log (SQL Server トレース ファイル) のいずれかの形式になっている必要があります。ワークロード ファイル、またはワークロード テーブルを 1 つ指定する必要があります。-itworkload_trace_table_name
チューニングのワークロード トレースを含むテーブルの名前を指定します。名前は、[database_name].[owner_name]**.**table_name という形式で指定します。次の表は、各パラメーターの既定値を示しています。
パラメーター
既定値
database_name
-D オプションで指定した database_name。
owner_name
dbo。
table_name
なし。
注 owner_name は必ず dbo としてください。それ以外の値を指定すると、dta の実行は失敗し、エラーが返されます。ワークロード ファイルまたはワークロード テーブルを 1 つ指定する必要があることにも注意してください。
-ixinput_XML_file_name
dta 入力情報を含む XML ファイルの名前を指定します。これは、DTASchema.xsd に従った有効な XML ドキュメントであることが必要です。チューニング オプションのコマンド プロンプトから指定した引数と競合する場合、この XML ファイルの対応する値が上書きされます。唯一の例外は、ユーザー定義の構成が XML 入力ファイルに評価モードで入力されている場合だけです。たとえば、XML 入力ファイルの Configuration 要素に構成が入力されており、EvaluateConfiguration 要素も同様にチューニング オプションの 1 つとして指定されている場合、XML 入力ファイルで指定されたチューニング オプションは、コマンド プロンプトから入力されるいずれのチューニング オプションよりも優先されます。-mminimum_improvement
推奨構成が満たす必要がある、最小向上率を指定します。-Nonline_option
物理デザイン構造をオンラインで作成するかどうかを指定します。次の表は、この引数で指定できる値の一覧と説明です。値
説明
OFF
推奨される物理デザイン構造をオンラインで作成しません。
ON
推奨される物理デザイン構造をすべてオンラインで作成します。
MIXED
データベース エンジン チューニング アドバイザーは、可能な場合にオンラインで作成できる物理デザイン構造を推奨します。
インデックスがオンラインで作成される場合、このオブジェクト定義には ONLINE = ON が追加されます。
-nnumber_of_events
dta でチューニングされるワークロードのイベント数を指定します。この引数が指定され、ワークロードが実行時間情報を含むトレース ファイルの場合、dta では、実行時間の長いものから順にイベントがチューニングされます。この引数は、物理デザイン構造の 2 つの構成を比較する場合に利用できます。2 つの構成を比較するには、両方の構成でチューニングする同じイベント数を指定し、次に示すように両方のチューニング時間を無制限に指定します。dta -n number_of_events -A 0
この場合、チューニング時間を無制限 (-A 0) に指定することが重要です。無制限に指定しない場合、データベース エンジン チューニング アドバイザーでは、既定の 8 時間のチューニング時間が前提となります。
-ofoutput_script_file_name
dta は、指定したファイル名と出力先に対して、推奨設定を Transact-SQL スクリプトとして書き込みます。このオプションと共に、-F を使用することができます。特に -or と -ox も使用している場合は、ファイル名が一意であることを確認してください。
-oroutput_xml_report_file_name
dta は、XML 形式の出力レポートへ推奨設定を書き込みます。ファイル名を指定した場合、推奨設定はその出力先へ書き込まれます。ファイル名を指定しない場合、dta ではセッション名に基づいてファイル名が生成され、現在のディレクトリへ書き込まれます。
このオプションと共に、**-F** を使用することができます。特に **-of** と **-ox** も使用している場合は、ファイル名が一意であることを確認してください。
-oxoutput_XML_file_name
dta は、指定したファイル名と出力先に対して、推奨設定を XML スクリプトとして書き込みます。データベース エンジン チューニング アドバイザーには、宛先ディレクトリへの書き込み権限があることを確認してください。このオプションと共に、-F を使用することができます。特に -of と -or も使用している場合は、ファイル名が一意であることを確認してください。
-Ppassword
ログイン ID のパスワードを指定します。このオプションを指定しない場合、dta によってパスワードが要求されます。-q
非表示モードを設定します。進行状況やヘッダー情報を含め、コンソールには情報が一切表示されません。-rlanalysis_report_list
生成する分析レポートのリストを指定します。次の表は、この引数で指定できる値の一覧を示しています。値
レポート
ALL
すべての分析レポート
STMT_COST
ステートメント コスト レポート
EVT_FREQ
イベント頻度レポート
STMT_DET
ステートメントの詳細レポート
CUR_STMT_IDX
ステートメントとインデックスのリレーション レポート (現在の構成)
REC_STMT_IDX
ステートメントとインデックスのリレーション レポート (推奨構成)
STMT_COSTRANGE
ステートメント コスト範囲レポート
CUR_IDX_USAGE
インデックス使用状況レポート (現在の構成)
REC_IDX_USAGE
インデックス使用状況レポート (推奨構成)
CUR_IDX_DET
インデックスの詳細レポート (現在の構成)
REC_IDX_DET
インデックスの詳細レポート (推奨構成)
VIW_TAB
ビューとテーブルのリレーション レポート
WKLD_ANL
ワークロード分析レポート
DB_ACCESS
データベース アクセス レポート
TAB_ACCESS
テーブルのアクセス レポート
COL_ACCESS
列のアクセス レポート
値をコンマで区切って複数のレポートを指定します。次に例を示します。
... -rl EVT_FREQ, VIW_TAB, WKLD_ANL ...
-Sserver_name[ \instance]
接続先となる SQL Server のコンピューターとインスタンスの名前を指定します。server_nameを指定しない場合、dta はローカル コンピューター上にある既定の SQL Server インスタンスに接続します。名前付きインスタンスに接続する場合、またはネットワーク上のリモート コンピューターから dtaを実行する場合、このオプションは必須です。-ssession_name
チューニング セッションの名前を指定します。-ID が指定されている場合、これは必須です。-Tftable_list_file
チューニングするテーブルの一覧が含まれているファイルの名前を指定します。このファイル内では、各テーブルをそれぞれ行を変えて指定します。テーブル名は、adventureworks2008R2.dbo.department のように、3 つの部分から構成されます。必要に応じてテーブル スケーリング機能を呼び出すには、既存のテーブル名の後に、テーブル内の行の予測数を示す数字を指定します。データベース エンジン チューニング アドバイザーでは、これらのテーブルを参照するワークロード内にあるステートメントのチューニングや評価を行うときに、行の予測数を考慮します。number_of_rows と table_name の間には 1 つ以上の空白を入れることに注意してください。次に、table_list_file ファイルのフォーマットを示します。
database_name.[schema_name].table_name [number_of_rows]
database_name.[schema_name].table_name [number_of_rows]
database_name.[schema_name].table_name [number_of_rows]
この引数は、コマンド プロンプトでテーブルの一覧を入力する代わりに使用します (-Tl)。-Tl を使用する場合は、テーブルの一覧ファイル (-Tf) を使用しないでください。両方の引数を使用する場合、dta は失敗し、エラーが返されます。
-Tf 引数および -Tl 引数を省略した場合、指定されたデータベースのすべてのユーザー テーブルをチューニングするものと判断されます。
-Tltable_list
コマンド プロンプトでチューニングするテーブルの一覧を指定します。テーブル名の間にコンマを挿入して区切ります。-D 引数で指定するデータベースが 1 つだけの場合、テーブル名をデータベース名で修飾する必要はありません。それ以外の場合、各テーブルには database_name.schema_name.table_name の形式で、完全修飾名が必要となります。この引数は、テーブルの一覧ファイルの代わりに使用します (-Tf)。-Tl と -Tf の両方を使用する場合、dta は失敗し、エラーが返されます。
-Ulogin_id
SQL Server への接続に使用されるログイン ID を指定します。-u
データベース エンジン チューニング アドバイザー GUI を起動します。すべてのパラメーターは、ユーザー インターフェイスの初期設定として扱われます。-x
チューニング セッションを開始し、終了します。
説明
Ctrl + C キーを 1 度押すと、チューニング セッションが停止し、この時点までに完了した dta による分析に基づいて、推奨設定が生成されます。推奨設定を生成するかどうかの確認が要求されます。Ctrl + C キーをもう一度押すと、推奨設定を生成せずにチューニング セッションを停止します。
例
A. 推奨設定で、インデックスとインデックス付きビューを含んだワークロードをチューニングする
次の例では、セキュリティで保護された接続 (-E) を使用して MyServer の tpcd1G データベースに接続し、ワークロードの分析と推奨設定の作成を行います。出力結果は script.sql という名前のスクリプト ファイルへ書き込まれます。script.sql が既に存在する場合は、-F 引数が指定されているため、dta はファイルを上書きします。チューニング セッションは、ワークロードの分析を完全に終了するように時間制限なしで実行されます (-A 0)。推奨設定の最小向上率は 5% を指定する必要があります (-m 5)。dta では、最終的な推奨設定にインデックスおよびインデックス付きビューが含まれます (-fa IDX_IV)。
dta –S MyServer –E -D tpcd1G -if tpcd_22.sql -F –of script.sql –A 0 -m 5 -fa IDX_IV
B. ディスク使用量を制限する
次の例では、生データと追加のインデックスを含むデータベースの合計サイズを 3 GB までに制限し (-B 3000)、出力先には d:\result_dir\script1.sql を指定しています。実行は、1 時間以内です (-A 60)。
dta –D tpcd1G –if tpcd_22.sql -B 3000 –of "d:\result_dir\script1.sql" –A 60
C. チューニングするクエリの数を制限する
次の例では、orders_wkld.sql ファイルから読み取るクエリの数を最大 10 に制限し (-n 10)、15 分間実行します (-A 15)。どちらを先に指定しても同じです。10 個のクエリすべてをチューニングするために、-A 0 を使用してチューニング時間を無制限に指定します。時間が重要な場合は、この例で示すように -A 引数でチューニングできる時間数を指定して、適切な制限時間を指定します。
dta –D orders –if orders_wkld.sql –of script.sql –A 15 -n 10
D. ファイル内に指定されている特定のテーブルをチューニングする
次の例では、table_list_file の使用方法を示しています (-Tf 引数)。table_list.txt ファイルの内容は、次のとおりです。
Adventureworks2008R2.dbo.customer 100000
adventureworks2008R2.dbo.store
adventureworks2008R2.dbo.product 2000000
table_list.txt 内には、次の内容が指定されています。
データベース内にある customer、store、および product テーブルのみをチューニングの対象とする。
customer、product テーブルの列数は、それぞれ 100,000 と 2,000,000 と想定する。
store の行数は、このテーブル内の現在の行数と同じと想定する。
table_list_file では、行数とテーブル名の間には 1 つ以上の空白があることに注意してください。
チューニング時間は 2 時間 (-A 120) で、出力は XML ファイルに書き込まれます (-ox XMLTune.xml)。
dta –D pubs –if pubs_wkld.sql –ox XMLTune.xml –A 120 –Tf table_list.txt