適用対象:SQL Server
データベース エンジン チューニング アドバイザーは、データベースのチューニング、チューニング セッションの管理、チューニングに関する推奨事項の表示に役立ちます。 物理的な設計構造についての高度な知識があれば、このツールを使用して予備的なデータベース チューニング分析を実行できます。 また、データベース チューニングの知識があまりない場合でも、チューニングするワークロードに最適な物理設計構造を見つけられます。 このレッスンでは、データベース エンジン チューニング アドバイザーのグラフィカル ユーザー インターフェイスを初めて使用するデータベース管理者と、物理設計構造に関する広範な知識がないシステム管理者向けの基本的なプラクティスについて説明します。
前提条件
このチュートリアルを実行するには、SQL Server Management Studio、SQL Server を実行しているサーバーへのアクセス、および AdventureWorks2025 データベースが必要です。
- SQL Server Management Studio をインストールします。
- SQL Server 2017 Developer Edition をインストールします。
- AdventureWorks サンプル データベースをダウンロードします。
SSMS でデータベースを復元する手順については、「SSMS を 使用したデータベース バックアップの復元」を参照してください。
注意
このチュートリアルは、SQL Server Management Studio の使用と基本的なデータベース管理タスクに慣れているユーザーを対象としています。
ワークロードを調整する
データベース エンジン チューニング アドバイザーを使用して、チューニング用に選択したデータベースとテーブルのクエリ パフォーマンスに最適な物理データベース設計を見つけます。
サンプルの SELECT examples ステートメントをコピーし、SQL Server Management Studio のクエリ エディターにステートメントを貼り付けます。 ファイルを
MyScript.sqlとして簡単に見つけることができるディレクトリに保存します。 次のコードでは、AdventureWorksデータベースに対して動作する例を示します。USE [AdventureWorks2022]; GO -- Might need to modify database name to match database SELECT DISTINCT pp.LastName, pp.FirstName FROM Person.Person AS pp INNER JOIN HumanResources.Employee AS e ON e.BusinessEntityID = pp.BusinessEntityID WHERE pp.BusinessEntityID IN ( SELECT SalesPersonID FROM Sales.SalesOrderHeader WHERE SalesOrderID IN ( SELECT SalesOrderID FROM Sales.SalesOrderDetail WHERE ProductID IN ( SELECT ProductID FROM Production.Product AS p WHERE ProductNumber = 'BK-M68B-42')));データベース エンジン チューニング アドバイザーを起動します。 SQL Server Management Studio (SSMS) で [ツール] メニューの [データベース エンジン チューニング アドバイザー] を選択します。 詳細については、データベース エンジン チューニング アドバイザーの起動に関する記事をご覧ください。 [サーバーへの接続] ダイアログ ボックスで SQL Server に接続します。
データベース エンジン チューニング アドバイザー GUI の右側のウィンドウの [全般] タブで、
MySessionに「」と入力します。ワークロードに対して [ファイル] を選択し、双眼鏡アイコンを選択して、ワークロード ファイルを参照します。 手順 1 で保存した
MyScript.sqlファイルを見つけます。ワークロード分析 一覧で
データベースの を選択し、[ データベースとテーブルを選択して をチューニングする] グリッドでを選択し、[チューニング ログの保存] 選択します。 [ワークロード分析用のデータベース] では、データベース エンジン チューニング アドバイザーがワークロードのチューニング時に最初に接続するデータベースを指定します。 チューニングの開始後に、データベース チューニング アドバイザーは、ワークロードに含まれる USE DATABASEステートメントで指定されたデータベースに接続します。
[ チューニング オプション] タブを選択します。この方法ではチューニング オプションを設定しませんが、既定のチューニング オプションを確認するには少し時間がかかります。 このタブ ページのヘルプを表示するには、F1 キーを押します。 その他のチューニング オプションを表示するには、[ 詳細オプション] を 選択します。 [高度なチューニング オプション] ダイアログ ボックスに表示されるチューニング オプションに関する情報については、[ヘルプ] を選択します。 [ キャンセル] を選択すると 、[高度なチューニング オプション] ダイアログ ボックスが閉じ、既定のオプションが選択したままになります。
ツール バーの [ 分析の開始 ] ボタンを選択します。 ワークロードの分析中は、 [進行状況] タブで実行状況を監視できます。チューニングが完了すると [推奨設定] タブが表示されます。
チューニング停止の日付と時刻に関してエラーが発生する場合は、 [チューニング オプション] タブの [停止時刻] の時間を確認します。 [停止時刻] の日付と時刻が現在の日付と時刻よりも後になっていることを確認し、必要に応じて変更します。
分析が完了したら、[アクション] メニューの [推奨事項の保存] を選択して、推奨事項を Transact-SQL スクリプトとして保存します。 [ 名前を付けて保存 ] ダイアログ ボックスで、推奨事項スクリプトを保存するディレクトリに移動し、
MyRecommendationsファイル名を入力します。
チューニング推奨設定の表示
[推奨設定] タブで、 [推奨インデックス] のすべての列を表示するには、このページの下部にあるスクロール バーを使用します。 各行は、データベース エンジン チューニング アドバイザーが削除または作成することを推奨するデータベース オブジェクト (インデックスまたはインデックス付きビュー) を表します。 右端の列までスクロールし、[定義] を選択 します。 データベース エンジン チューニング アドバイザーに [SQL スクリプトのプレビュー] ウィンドウが表示されます。ここには、その行のデータベース オブジェクトを作成または削除する Transact-SQL スクリプトが表示されます。 [ 閉じる] を選択してプレビュー ウィンドウを閉じます。
リンクを含む 定義 を見つけにくい場合は、タブ付きページの下部にある [ 既存のオブジェクトを表示 する] チェック ボックスをオフにします。 この操作により、表示される行の数が減ります。 推奨設定が生成されたオブジェクトのみが データベース エンジン チューニング アドバイザーに表示されます。 [既存のオブジェクトを表示する] チェック ボックスをオンにすると、現在
AdventureWorks2025データベースに存在するすべてのデータベース オブジェクトが表示されます。 タブ ページ右側のスクロール バーを使用し、すべてのオブジェクトを表示します。[推奨インデックス] ペインのグリッドを右クリックします。 このとき表示されるメニューでは、推奨設定を選択または選択解除できます。 また、グリッド テキストのフォントも変更できます。
[ アクション ] メニューの [ 推奨事項の保存 ] を選択して、すべての推奨事項を 1 つの Transact-SQL スクリプトに保存します。 スクリプトに
MySessionRecommendations.sqlという名前を付けます。SQL Server Management Studio のクエリ エディターで
MySessionRecommendations.sqlスクリプトを開いて表示します。 クエリ エディターでスクリプトを実行することで、AdventureWorks2025サンプル データベースに推奨事項を適用できますが、これを行わないでください。 クエリ エディターのスクリプトを実行せずに閉じます。別の方法として、データベース エンジン チューニング アドバイザーの [アクション] メニューで [推奨事項の適用] を選択して推奨事項を適用することもできますが、このプラクティスでは、これらの推奨事項を適用しないでください。
[推奨設定] タブに複数の推奨が存在する場合は、 [推奨インデックス] グリッドにデータベース オブジェクトが一覧表示されます。この中のいくつかの行をオフにします。
[ アクション ] メニューの [ 推奨事項の評価] を選択します。 データベース エンジン チューニング アドバイザーは、
MySessionから元の推奨事項のサブセットを評価できる新しいチューニング セッションを作成します。新しい
EvaluateMySession入力し、ツール バーの [分析の開始] ボタンを選択します。 新しいチューニングセッションでも手順 2 と 3 を繰り返して、推奨事項を確認します。
まとめ
セッションの実行後にチューニング オプションを変更する必要がある場合は、チューニングの推奨事項のサブセットを評価することが必要になる場合があります。 たとえば、セッションのチューニング オプションを指定する際に、インデックス付きビューを考慮するようデータベース エンジン チューニング アドバイザーに依頼することがありますが、推奨事項が生成された後でインデックス付きビューを使用しないことを決定します。
インデックス付きビューを考慮せずにデータベース エンジン チューニング アドバイザーでセッションを再評価するには、[アクション] メニューの [推奨事項の評価] オプションを使用します。 [ 推奨事項の評価 ] オプションを使用すると、以前に生成された推奨事項が現在の物理設計に仮説的に適用され、2 番目のチューニング セッションの物理設計に到達します。
チューニング結果の詳細については、このレッスンの次のタスクで説明する [ レポート ] タブで確認できます。
チューニング レポートの表示
チューニング結果を実装するスクリプトを表示すると便利ですが、データベース エンジン チューニング アドバイザーには、表示できる便利なレポートも多数用意されています。 これらのレポートは、チューニングするデータベース内の既存の物理設計構造と推奨される構造に関する情報を提供します。 [レポート] タブを選択して、チューニング レポート を表示します。
データベース チューニング アドバイザーの [レポート] タブを選択します。
[チューニング サマリー] ペインに、このチューニング セッションに関する情報が表示されます。 このペインの内容をすべて表示するには、スクロール バーを使用します。 [予測向上率] と [推奨構成で使用される容量] を確認してください。 チューニング オプションを設定するときに、推奨事項で使用される領域を制限できます。 [チューニング オプション] タブで、 [詳細設定オプション] を選択します。 [推奨インデックス用の最大領域を定義する] チェック ボックスをオンにし、推奨構成で使用できる最大領域を MB 単位で指定します。 このチュートリアルに戻るには、ヘルプ ブラウザーの [戻る] ボタンを使用します。
[ チューニング レポート ] ウィンドウで、[レポートの選択] ボックスの一覧で [ 明細書コスト レポート ] を選択 します。 レポートを表示するためのスペースがさらに必要な場合は、 [セッション モニター] ペインの境界を左方向にドラッグします。 データベース内のテーブルに対して実行される各 Transact-SQL ステートメントのパフォーマンス コストは、ステートメントによって異なります。 テーブル内の頻繁にアクセスされる列に対して有効なインデックスを作成することで、このパフォーマンス コストを削減します。 このレポートは、ワークロードでの元のステートメント実行コストと、チューニング推奨設定の実装後のコストを比較し、予測向上率を示します。 レポートに含まれる情報の量は、ワークロードの長さと複雑さに基づきます。
グリッド領域で [ 明細書コスト レポート ] ウィンドウを右クリックし、[ ファイルにエクスポート] を選択します。 レポートを
MyReportとして保存します。 ファイル名には、拡張子 .xml が自動的に付加されます。MyReport.xmlは、お気に入りの XML エディターまたは SQL Server Management Studio で開いて、レポートの内容を表示できます。データベース エンジン チューニング アドバイザーの [レポート] タブに戻り、再び ステートメント コスト レポート 右クリックします。 使用できるその他のオプションを確認してください。 表示しているレポートのフォントを変更できます。 ここでフォントを変更すると、他のタブ付きページのフォントも変更されます。
[レポートの選択] ボックスの一覧で他の レポートを選択 して、理解を深めてください。
まとめ
チューニング セッションのデータベース エンジン チューニング アドバイザー GUI の [MySession] タブを確認しました。 これらの同じ手順を使用して、 EvaluateMySession チューニング セッション用に生成されたレポートを調べることができます。 このレポートの内容を検証するには、 [セッション モニター] ペインの [EvaluateMySession] をダブルクリックします。