Query Performance Insight の設定方法

Microsoft SQL Server/Microsoft Azure SQL Database サポートチーム
サポート エンジニア 清水 磨

[概要]
SQL Database では Query Performance Insight と呼ばれる機能が新しく追加されました。Query Performance Insight では、自動的にデータベース リソース(DTU)の詳細な消費量やCPU負荷の高いクエリ、クエリの詳細を保存、確認することができるようになり、よりデータベース パフォーマンスのトラブルシューティングが実施しやすくなりました。これらは内部的にSQL Server 2016 から新しく実装されているクエリ ストアという機能を用いており、その結果をAzure ポータル上からグラフィカルに確認できる機能になります。
今回はこのQuery Performance Insight の設定方法についてご案内します。

[前提事項] ・V12サーバーでのみ、使用可能です。
・Query Performance Insight(クエリ ストア) の有効化を行っていない場合には、データベース単位で手動で設定する必要があります。

・リソース消費上位クエリおよびチャートを表示するには、リーダー、所有者、共同作成者、SQL DB の共同作業者、または SQL Server の共同作業者の権限が必要です。
・クエリ テキストを表示するには、所有者、共同作成者、SQL DB の共同作業者、または SQL Server の共同作業者の権限が必要です。

※権限の確認、設定は、Azure のロールベースのアクセス制御 の 「Azure ポータルを使用したアクセス権の管理」の手順で行います。

[設定方法]
Azure ポータル、および、クエリによる設定方法をご説明します。

// Azure ポータルからの設定方法
----------------------------------------------
1. Azure ポータルより該当データベースを開きます。
以下では AdventureWorkLT というサンプルデータベースを基に説明します。

Azure Portal
https://portal.azure.com/ image

2. 画面中部にあるQuery Performance Insight のアイコン、もしくは [すべての設定] から [機能] – [Query Performance Insight] の項目を選択します。
imageimage

3. 既定ではクエリストアが設定されていないため、まず以下の警告を選択します。
image

上記警告を選択すると以下の有効化ボタンが表示されますので、選択します。
image

上記の後、設定が有効になりますが、パフォーマンス情報を取得するまでは、利用することができません。そのため、しばらく待機し、普段から行っている処理を実施します。
image image

 

// その他の設定方法
----------------------------------------------
上記 Azure ポータルからの設定以外では、クエリによる設定方法とSQL Server Management Studio を用いた方法があります。

A. クエリによる設定方法
******************************
該当データベースに対して以下のようにクエリを実行します。
------------------------
ALTER DATABASE AdventureWorksLT SET QUERY_STORE = ON;
------------------------

B. SQL Server Management Studio
*****************************************
最新の SQL Server 2016 Management Studio CTP でも設定を行うことができます。
該当データベースのプロパティを開き、[Query Store] - [Operation Mode] を Read Writeに変更します。
image

[確認方法]
クエリに関するパフォーマンスデータがクエリストアに格納されると、ポータル上から以下のようなグラフが確認できるようになります。
以下のグラフではDTU使用率が100%近くになっている時間帯が確認できます。また、該当時刻にクエリ ID:87が実行されていることが分かります。
image

クエリのごとのパフォーマンス統計も取得されており、以下ではクエリ ID:87 が非常に多く実行されていることが確認できます。
image

クエリ ID:87 は以下のSELECT 文であることが、ここから特定できます。
image

SQL Server 2016 Management Studio CTP を利用することでさらに詳細なデータを見ることも可能です。
例えば、クエリごとの詳細な処理時間や実行プランといった情報です。もし実行プランが変化した場合には古い実行プランの情報は蓄積され、必要に応じて確認、そのプランを強制的に使用させることも可能になります。(いわゆるプランガイドと同等の機能です。)

該当サーバーへ接続します。
image

オブジェクトエクスプローラーより、[Databases] – [該当データベース] – [Query Store]まで展開します。
配下には4種類のビューが用意されており、リソース消費量が多いクエリ(Top Resource Consuming Queries)などを簡単に表示することが可能です。
image

Top Resource Consuming Queriesのビューの画面です。
image

実行プランも簡単に確認できます。
image

[参考情報]
Azure SQL Database Query Performance Insight
https://azure.microsoft.com/ja-jp/documentation/articles/sql-database-query-performance/

Monitoring Performance By Using the Query Store
https://msdn.microsoft.com/library/dn817826.aspx

SQL Server Management Studio
https://msdn.microsoft.com/en-us/library/mt238290.aspx

上記からは英語版のSQL Server Management Studioのみ、ダウンロード可能です。
もし、日本語版をご利用されたい方は、以下のURLより、SQL Server 2016 日本語版をダウンロードしていただき、インストールしてください。

SQL Server 2016 Community Technology Preview 3.3
https://www.microsoft.com/ja-jp/evalcenter/evaluate-sql-server-2016