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