Azure SQL Database と Azure SQL Managed Instance での監視とパフォーマンス チューニング
適用対象: Azure SQL Database
Azure SQL Managed Instance
Azure SQL Database と Azure SQL Managed Instance 内のデータベースのパフォーマンスを監視するには、まず、特定のサービス レベルとパフォーマンス レベルの選択時に選択したデータベース パフォーマンスのレベルを基準にして、ワークロードで使用される CPU および IO リソースを監視します。 これを実現するために、Azure SQL Database と Azure SQL Managed Instance では、Azure portal 内で表示できる、または次のいずれかの SQL Server 管理ツールを使用して表示できるリソース メトリックを出力します:
- Visual Studio Code に基づくAzure Data Studio。
- Microsoft Visual Studio に基づく SQL Server Management Studio (SSMS)。
ソリューションの監視 | SQL Database | SQL Managed Instance | 顧客所有の VM 上のエージェントが必要 |
---|---|---|---|
Query Performance Insight | あり | いいえ | いいえ |
DMV を使用した監視 | あり | あり | いいえ |
クエリ ストアを使用して監視する | あり | あり | いいえ |
Azure Monitor での SQL Insights (プレビュー) | あり | あり | あり |
Azure Monitor ログを使用した Azure SQL Analytics (プレビュー) * | あり | あり | いいえ |
* 待機時間の短い監視を必要とするソリューションの場合、Azure SQL Analytics (プレビュー) は推奨されません。
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 Database と SQL Managed Instance によって使用される独自の監視機能と診断機能が用意されています。 Azure SQL Database とAzure SQL Managed Instance のさまざまなパフォーマンスの問題を監視するスクリプトについては、DMV を使用した監視に関する説明を参照してください。
Azure SQL Insights (プレビュー) と Azure SQL Analytics (プレビュー)
どちらのオファリングでも、異なるパイプラインを使用して、今後の Azure SQL Database メトリックのさまざまなエンドポイントにデータを提示しします。
Azure SQL Insights (プレビュー) は、Azure SQL データベース アクティビティに関する高度な分析情報を提供できる Azure Monitor 内のプロジェクトです。 Telegraf は、SQL ソースに接続し、データを収集し、Log Analytics にデータを移動するコレクション エージェントとして Telegraf を使用して、カスタマー マネージド VM を介してデプロイされます。
Azure SQL Analytics (プレビュー) では、Log Analytics が Azure SQL データベース アクティビティに関する高度な分析情報を提供する必要もあります。
Azure 診断テレメトリは、Azure SQL Database と Azure SQL Managed Instance の個別のストリーミング データ ソースです。 SQLInsights は、Azure SQL insights (プレビュー) 製品と混同しないように、Intelligent Insights 内のログであり、Azure 診断設定によって出力されるテレメトリのいくつかのパッケージの 1 つです。 診断設定は、リソース ログ カテゴリ (旧称診断ログ) を含む機能です。 詳細については、 エクスポートの診断テレメトリに関するページを参照してください。
- Azure SQL Analytics (プレビュー) では、診断テレメトリから取得されたリソース ログ (Azure portal の診断設定で構成可能) が使用されますが、Azure SQL insights (プレビュー) では別のパイプラインを使用してAzure SQL テレメトリが収集されます。
監視と診断テレメトリ
次の図は、Azure SQL 製品によって生成されたすべてのデータベース エンジン、プラットフォーム メトリック、リソース ログ、および Azure アクティビティ ログ、それらの処理方法、および分析のために表示する方法の詳細を示してます。
Azure portal で Azure SQL を監視および調整する
Azure portal では、Azure SQL Database と Azure SQL Managed Instance により、リソース メトリックの監視が提供されます。 Azure SQL Database はデータベース アドバイザーを提供し、Query Performance Insight はクエリ チューニングの推奨設定とクエリ パフォーマンスの分析情報を提供しています。 Azure portal では、論理 SQL サーバー、およびその単一データベースとプールされたデータベースに対して自動チューニングを有効にすることができます。
注意
使用率が非常に低いデータベースは、ポータルに実際の使用量より少なく表示されることがあります。 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/databases、Microsoft.Sql/servers/elasticPools、Microsoft.Sql/managedInstances を参照してください。
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 リソースと総保有コストに対する良い影響
メトリックとリソース ログのストリーミング エクスポートを有効にする
Intelligent Insights リソース ログを含む複数の宛先のいずれかに対する診断テレメトリのストリーミング エクスポートを有効にし、構成できます。
診断設定を構成して、単一データベース、プールされたデータベース、エラスティック プール、マネージド インスタンス、インスタンス データベースのメトリックおよびリソース ログを次のいずれかの Azure リソースにストリーム配信できます。
Azure Monitor の Log Analytics ワークスペース
Azure Monitor の Log Analytics ワークスペースにメトリックおよびリソース ログをストリーム配信できます。 ここでストリーム配信されたデータは、SQL Analytics (プレビュー) で使用できます。これは、パフォーマンス レポート、アラート、軽減策のレコメンデーションを含むデータベースのインテリジェントな監視機能を提供する、クラウドのみの監視ソリューションです。 Log Analytics ワークスペースにストリーム配信されたデータは、収集された他の監視データと組み合わせて分析できます。また、アラートや視覚化などの他の Azure Monitor 機能を利用することもできます。
注意
Azure SQL Analytics (プレビュー) は Azure Monitor との統合です。ここでは多くの監視ソリューションがアクティブな開発ではなくなりました。 SQL nsights を使用して SQL デプロイを監視する (プレビュー)。
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 でホストされているイベント ファイル ターゲットを使用します。
次のステップ
- 単一データベースとプールされたデータベースのインテリジェント パフォーマンスに関する推奨事項の詳細については、「データベース アドバイザーのパフォーマンスに関する推奨事項」を参照してください。
- パフォーマンスの問題の自動診断および根本原因分析を含むデータベース パフォーマンスの自動監視については、Azure SQL Intelligent Insights に関するページを参照してください。
- SQL Insights を使用して SQL デプロイを監視する (プレビュー)
- Azure Monitor を使用して Azure SQL Database を監視する
- Azure Monitor を使用して Azure SQL Managed Instance を監視する