[Azure SQL Database] DTU使用率が100%になった時にやるべき事

 

SQL Server/Microsoft Azure SQL Database サポート

田中 真人

皆さん、こんにちは。 Microsoft SQL Server/Microsoft Azure SQL Database サポートチーム です。
日ごろから、SQL Database をご愛顧頂き誠にありがとうございます。

今回は、日々のサポート業務において、比較的お問合せをいただく事象についてご紹介させていただきます。SQL Database の DTU使用率が突然上がり、SQL Database に接続できない、クエリが失敗した、確認するとCPU使用率が100%に達していた。どのように対応すればよいか確認したい。というお問合せを頂く事があります。

この場合、CPU のリソース不足により要求が失敗している事が考えられるのですが、皆様はそのような経験はございますでしょうか。

リソース不足の原因は、一般的にその時実行されているクエリに原因があります。その為、CPUがリソース不足になった原因となっているクエリを特定し、クエリのチューニングを実施する事が一般的な対処法となります。
データI/Oにおける負荷も同様の事が言えます。

そこで今回は、SQL Database に負荷をかけているクエリの特定方法について紹介します。
SQL Database に負荷をかけているクエリは、クエリ ストアという機能を使用して特定する事ができます。
クエリ ストアのご利用方法につきまして、以下の順に記載致します。

 

  1. クエリ ストア機能のご利用について
  2. 負荷をかけているクエリの特定方法
  3. クエリ特定後の対応について

1)クエリ ストア機能のご利用について

クエリ ストア機能のご利用には SQL Server 2016 以上のバージョンの SQL Server Management Studio が必要です。
インストールされていない場合は、以下サイトより最新の SQL Server Management Studio をインストール下さい。

SQL Server Management Studio (SSMS) のダウンロード
/ja-jp/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-2017

※上記サイト内の「使用できる言語」から、ご利用環境に即した言語を選択頂き、ダウンロード下さい。
なお、本ブログでは、日本語版でのご紹介となります。

 

2)負荷をかけているクエリの特定方法

2-1)SSMS を起動し、該当のデータベースへ接続し、以下の画面キャプチャ通りに 「対象データベース」 →「クエリ ストア」→「全体のリソース消費量」を展開します。

image
<図1. クエリ ストア>

2-2)画面右上の「構成」ボタンを押下し、確認する項目と期間を選択します。ここではCPUを例にあげ記載します。データI/Oを確認する場合は「物理読み取り」を選択するなど、状況に合わせて選択してください。

image
<図2. リソース全体の消費量>

image
<図3. グラフの表示>

2-3)CPU使用率の高かった日時の棒グラフを選択します。

clip_image004

<図4. リソース全体の消費量>

 

2-4)ここで、CPU使用率の高かったクエリを特定する事ができます。以下のサンプル画面では、クエリ159のCPU使用率が高い事がわかります。データI/O(物理読み取りを選択)の場合も確認の仕方は同様です。

clip_image005 <図4. CPU時間>

 

補足)クエリ ストアは既定で有効ですが、無効の場合は、以下のクエリを実行する事で有効にできます。

--クエリのサンプル--
ALTER DATABASE データベース名 SET QUERY_STORE = ON;
------------------------------

クエリ ストアの概要につきましては、以下サイトに詳細な記載がございます。ご参考ください。

クエリのストアを使用した、パフォーマンスの監視
https://msdn.microsoft.com/library/dn817826.aspx

3)クエリ特定後の対応について

負荷をかけているクエリを特定する事ができましたら、該当クエリの負荷が高い原因を調査、チューニングしていきます。
一般的にはまず、該当時間帯だけイレギュラーに実行されていなかったか、本来流れるはずではないクエリが流れていなかったかなど、調査します。
そのような特殊な状況でなければ、該当のクエリのチューニングや、データ量削減等を検討します。

クエリのチューニングを実施しても事象が解消されない場合は、選択されているサービスレベルが適切ではない可能性がございますので、サービスレベルを1つ上にあげて運用頂く事をご検討ください。 SQL Database 側で実施されているような、お心当たりのないクエリが原因となっていた場合は、実行日時と該当のクエリ情報を添えて、弊社サポート窓口までお問い合わせください。

 

参考情報

一般的なクエリのチューニング方法につきまして、以下サイトに詳細な記載がございます。ご参考ください。

Microsoft Azure SQL Database パフォーマンス チューニング (第1回)
https://blogs.msdn.microsoft.com/jpsql/2016/04/20/microsoft-azure-sql-database-%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9-%E3%83%81%E3%83%A5%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0-%E7%AC%AC%EF%BC%91%E5%9B%9E/

補足)クエリのチューニングは、Premier サポートにてご支援が可能でございます。必要に応じてご利用頂く事をご検討ください。