Azure SQL Database と Azure SQL Managed Instance での監視とパフォーマンス チューニング

適用対象:Azure SQL データベースAzure SQL Managed Instance

Azure SQL Database と Azure SQL Managed Instance 内のデータベースのパフォーマンスを監視するには、まず、特定のサービス レベルとパフォーマンス レベルの選択時に選択したデータベース パフォーマンスのレベルを基準にして、ワークロードで使用される CPU および IO リソースを監視します。 これを実現するために、Azure SQL Database と Azure SQL Managed Instance では、Azure portal 内で表示できる、または次のいずれかの SQL Server 管理ツールを使用して表示できるリソース メトリックを出力します:

次の表に、Azure SQL データベース と Azure SQL Managed Studio の監視機能の概要を示します。

ソリューションの監視 SQL Database SQL Managed Instance 資産の監視 待ち時間の短縮 包括的なデータ
メトリックとアラート はい あり あり はい いいえ
Query Performance Insight あり いいえ はい いいえ いいえ
DMV を使用した監視 あり はい いいえ はい はい
クエリ ストアを使用して監視する あり はい いいえ はい いいえ
Database Watcher (プレビュー) はい あり あり あり はい
Azure Monitor での SQL Insights (プレビュー) あり はい いいえ はい いいえ
Azure Monitor ログを使用した Azure SQL Analytics (プレビュー) あり あり はい いいえ いいえ

ヒント

Database Watcher は、データ コレクション待機時間の短縮、資産レベルの監視、クエリ レベルの詳細を含む包括的な監視データ、収集された監視データに対する高度な分析のサポートを必要とするシナリオに推奨される監視ソリューションです。

Azure portal のデータベース アドバイザー

Azure SQL Database には、パフォーマンスを向上させるために、インテリジェントなパフォーマンス チューニングの推奨設定と自動チューニング オプションを提供するデータベース アドバイザーが多数用意されています。

また、Query Performance Insight では、単一データベースとプールされたデータベースの CPU と IO の使用率が最も高いクエリについての詳細が表示されます。

  • Query Performance Insight は、Azure SQL Database の [インテリジェント パフォーマンス] の [概要] ウィンドウの Azure portal で使用できます。 自動的に収集された情報を使用してクエリを特定し、ワークロードのパフォーマンスの最適化を開始します。
  • 回帰を防ぐためにクエリ実行プランを強制したり、ワークロード パターンに基づいて非クラスター化インデックスを作成および削除したりするなど、これらのレコメンデーションを自動的に実装するように 自動チューニング を構成することもできます。 自動チューニングは、Azure SQL Database の [インテリジェント パフォーマンス] の [概要] ウィンドウの Azure portal でも使用できます。

Azure SQL Database と Azure SQL Managed Instance では、データベースやソリューションのパフォーマンスのトラブルシューティングを行い、これらを最大化するのに役立つ、人工知能によって支えられる高度な監視およびチューニング機能が提供されます。 使用と分析を行うために、複数の宛先のいずれかに対して、これらの Intelligent Insights、およびその他のデータベース リソース ログとメトリックのストリーミング エクスポートを構成することを選択できます。

Microsoft Azure portal の外部では、データベースエンジンは、クエリ ストア動的管理ビュー (DMV) など、Asure SQL データベースと SQL Managed Instance によって使用される独自の監視機能と診断機能が用意されています。 Azure SQL Database とAzure SQL Managed Instance のさまざまなパフォーマンスの問題を監視するスクリプトについては、DMV を使用した監視に関する説明を参照してください。

監視と診断テレメトリ

次の図は、Azure SQL 製品によって生成されたすべてのデータベース エンジン、プラットフォーム メトリック、リソース ログ、および Azure アクティビティ ログ、それらの処理方法、および分析のために表示する方法の詳細を示してます。

Azure SQL 製品のログと診断情報の完全なパスを示す図。

Azure portal で Azure SQL を監視および調整する

Azure portal では、Azure SQL Database と Azure SQL Managed Instance により、リソース メトリックの監視が提供されます。 Azure SQL Database はデータベース アドバイザーを提供し、Query Performance Insight はクエリ チューニングの推奨設定とクエリ パフォーマンスの分析情報を提供しています。 Azure portal では、論理 SQL サーバー、およびその単一データベースとプールされたデータベースに対して自動チューニングを有効にすることができます。

Note

使用率が非常に低いデータベースは、ポータルに実際の使用量より少なく表示されることがあります。 double 値を最も近い整数値に変換する場合のテレメトリ生成方法が理由で、0.5 未満の特定の使用量は 0 に丸められます。これにより、生成されたテレメトリの細分性は低下します。 詳細については、「使用率が低いデータベースおよびエラスティック プールのメトリックの 0 への丸め処理」を参照してください。

Azure SQL Database と Azure SQL Managed Instance のリソースの監視

Azure portal 内の [メトリック] ビューでは、さまざまなリソース メトリックをすばやく監視できます。 これらのメトリックを使用すると、データベースが CPU、メモリ、IO、またはストレージ リソースの制限に近づいているかどうかを確認できます。 DTU、CPU、または IO 使用率が高い場合は、ワークロードにより多くのリソースが必要であることを示している可能性があります。 最適化が必要なクエリを示している場合もあります。 Azure SQL Database と Azure SQL Managed Instance でサポートされるメトリックについては、Microsoft.Sql/servers/databasesMicrosoft.Sql/servers/elasticPoolsMicrosoft.Sql/managedInstances を参照してください。

SQL Database のリソース メトリックの Azure portal のスクリーンショット。

Azure SQL Database で推奨されるアラート ルールのセットについては、「メトリックとアラートを使用して Azure SQL Database を監視する」を参照してください。

Note

Azure portal のストレージ関連のメトリック (使用されたデータ スペースなど) は、2 の累乗の値で報告されますが、10 の累乗の単位を使用します。 たとえば、1 MB (メガバイト) のストレージ領域は、1,000,000 バイトではなく 1,048,576 バイトを指します。 2 の累乗の値に使用される新しい単位は、KiB、MiB、GiB などです。データベース エンジン内で従来から確立されている使用法との互換性と一貫性を確保するために、Azure SQL ストレージ メトリックでは、KB (キロバイト)、MB (メガバイト)、GB (ギガバイト) などの古い単位を使用します。

Azure SQL Database 内のデータベース アドバイザー

Azure SQL Database には、単一データベースとプールされたデータベースのパフォーマンス チューニングに関する推奨設定を提供するデータベース アドバイザーが含まれています。 これらの推奨設定は、Azure portal と PowerShell を使用して入手できます。 また、これらのチューニング推奨設定を Azure SQL Database で自動的に実装できるように、自動チューニングを有効にすることもできます。

Azure SQL Database 内の Query Performance Insight

Query Performance Insight では、単一データベースとプールされたデータベースに対して実行するクエリのうち、最も負荷が高いものと実行時間が長いもののパフォーマンスが Azure portal に示されます。

使用率が低いデータベースおよびエラスティック プールのメトリックの 0 への丸め処理

2020 年 9 月以降、使用率が非常に低いデータベースは、ポータルに実際の使用量より少なく表示されることがあります。 double 値を最も近い整数値に変換する場合のテレメトリ生成方法が理由で、0.5 未満の特定の使用量は 0 に丸められます。これにより、生成されたテレメトリの細分性は低下します。

次に例を示します。1 分間に 4 つのデータ ポイント 0.1、0.1、0.1、0.1 があると考えてみましょう。これらの低値は 0、0、0、0 に切り捨てられ、平均は 0 であると示されます。 データ ポイントのいずれかが 0.5 より大きい場合は、0.1、0.1、0.9、0.1 となり、これらは 0、0、1、0 に丸められ、平均は 0.25 であると表示されます。

パフォーマンスの問題のインテリジェントな評価を生成する

Azure SQL Database と Azure SQL Managed Instance の Intelligent Insights では、組み込まれているインテリジェンスを使って、人工知能によりデータベースの使用状況が継続的に監視され、パフォーマンス低下の原因となる破壊的なイベントが検出されます。 Intelligent Insights は、クエリ実行の待機時間、エラー、またはタイムアウトに基づいて、データベースのパフォーマンスの問題を自動的に検出します。 検出されると、Intelligent Insights によって詳細な分析が実行され、SQLInsights と呼ばれるリソース ログが生成されます (Azure Monitor SQL insights (プレビュー) とは無関係です)。 SQLInsights は、 イシューのインテリジェントな評価です。 このアセスメントは、データベース パフォーマンスの問題の根本原因分析と、可能な場合にはパフォーマンス向上に関する推奨事項で構成されます。

Intelligent Insights は、Azure の組み込みインテリジェンスの固有の機能であり、次の価値を提供します。

  • プロアクティブな監視
  • カスタマイズされたパフォーマンスの洞察
  • データベースのパフォーマンス低下の早期検出
  • 検出された問題の根本原因分析
  • パフォーマンス向上に関する推奨事項
  • 数十万のデータベースのスケールアウト機能
  • DevOps リソースと総保有コストに対する良い影響

メトリックとリソース ログのストリーミング エクスポートを有効にする

診断設定は、リソース ログ カテゴリ (旧称、診断ログ) を含む機能です。 ログ分析、Event Hubs、Azure Storage など、複数の宛先のいずれかに対する診断テレメトリのストリーミング エクスポートを有効にして構成できます。

Note

Intelligent Insightsのリソース ログ カテゴリは、SQLInsights と呼ばれます。 これは、SQL Insights (プレビュー) 監視ソリューションとは関係ありません。

診断設定を構成して、単一データベース、プールされたデータベース、エラスティック プール、SQL Managed Instance、インスタンス データベースのメトリックおよびリソース ログのカテゴリを次のいずれかの Azure リソースにストリーム配信できます。

Azure Monitor の Log Analytics ワークスペース

Azure Monitor の Log Analytics ワークスペースにメトリックおよびリソース ログをストリーム配信できます。 ここでストリーム配信されたデータは、SQL Analytics (プレビュー) で使用できます。これは、パフォーマンス レポート、アラート、軽減策のレコメンデーションを含むデータベースのインテリジェントな監視機能を提供する、クラウドのみの監視ソリューションです。 Log Analytics ワークスペースにストリーミングされたデータは、収集された他の監視データと組み合わせて分析できます。また、このデータを使用すると、アラートや視覚化などの他の Azure Monitor 機能を使用することもできます。

Note

Azure SQL Analytics (プレビュー) は Azure Monitor との統合です。ここでは多くの監視ソリューションがアクティブな開発ではなくなりました。

Azure Event Hubs

メトリックとリソース ログは、Azure Event Hubs にストリーム配信できます。 診断テレメトリをイベント ハブにストリーム配信して、次の機能を提供します。

  • サード パーティ製のロギングおよびテレメトリ システムにログをストリーミングする

    すべてのメトリックとリソース ログを 1 つのイベント ハブにストリーミングして、ログ データをサード パーティの SIEM またはログ分析ツールにパイプします。

  • カスタムのテレメトリおよびログ プラットフォームを構築する

    高い拡張性の公開サブスクライブを特長とするイベント ハブを使用することで、メトリックとリソース ログをカスタム テレメトリ プラットフォームに柔軟に取り込むことができます。 詳細については、Azure Event Hubs に関するページを参照してください。

  • データを Power BI にストリーム配信してサービスの正常性を表示する

    Event Hubs、Stream Analytics、Power BI を使用して、診断データを Azure サービスのほぼリアルタイムの分析情報に転換します。 このソリューションの詳細については、「Stream Analytics と Power BI:ストリーミング データのリアルタイム分析ダッシュボード」を参照してください。

Azure Storage

メトリックとリソース ログを Azure Storage にストリーム配信します。 Azure ストレージを使用して、前述の 2 つのストリーミング オプションの何分の 1 かのわずかなコストで、膨大な量の診断テレメトリをアーカイブできます。

拡張イベントを使用する

さらに、拡張イベントを使用して、SQL Server、Azure SQL Database、およびAzure SQL Managed Instance の高度な監視とトラブルシューティングを行うことができます。 拡張イベントは、"トレース" ツールとイベント アーキテクチャであり、SQL トレースよりも優れています。これにより、ユーザーはパフォーマンスの問題のトラブルシューティングや特定に必要なデータをできるだけ多くまたは少なく収集しながら、進行中のアプリケーション パフォーマンスへの影響を軽減できます。 拡張イベントは、非推奨となった SQL Trace と SQL Server Profiler の機能に置き換わるものです。 Azure SQL Database の拡張イベントの使用の詳細については、Azure SQL Database での拡張イベントに関するページを参照してください。 Azure SQL Database と SQL Managed Instanceで、Azure Blob Storage でホストされているイベント ファイル ターゲットを使用します。