sys.dm_db_resource_stats (Azure SQL Database)

適用対象:Azure SQL Database

Azure SQL Database のデータベースの CPU、I/O、メモリ消費量を返します。 アクティビティがない場合でも、15 秒ごとに 1 つの行が存在します。 履歴データは約 1 時間保持されます。

Note

sys.dm_db_resource_stats は、Azure SQL Managed Instance ではサポートされていません。 代わりに、 sys.server_resource_stats カタログ ビューを使用してください。

データ型 説明
end_time datetime UTC 時刻は、現在のレポート間隔の終了を示します。
avg_cpu_percent decimal (5,2) サービス レベルの制限に対する割合での平均コンピューティング使用率。
avg_data_io_percent decimal (5,2) サービス レベルの制限に対する割合での平均データ I/O 使用率。 ハイパースケール データベースについては、リソース使用率の統計のデータ IO に関する説明を参照してください
avg_log_write_percent decimal (5,2) サービス レベルの制限に対する平均トランザクション ログ書き込み (MB (メガバイト)/秒)。
avg_memory_usage_percent decimal (5,2) サービス レベルの制限に対する平均メモリ使用率 (%)。

これには、バッファー プール ページとインメモリ OLTP オブジェクトのストレージに使用されるメモリが含まれます。
xtp_storage_percent decimal (5,2) インメモリ OLTP のストレージ使用率 (レポート間隔の終了時のプールの制限に対する割合)。 これには、メモリ最適化テーブル、インデックス、およびテーブル変数というインメモリ OLTP オブジェクトのストレージに使用されるメモリが含まれます。 また、メモリ最適化テーブルに対する ALTER TABLE 操作の処理に使用されるメモリも含まれます。

インメモリ OLTP がデータベースで使用されていない場合は 0 を返します。
max_worker_percent decimal (5,2) データベースのサービス レベルの制限に対する最大同時ワーカー数 (要求)。
max_session_percent decimal (5,2) データベースのサービス レベルの制限に対する割合での最大同時セッション数。
dtu_limit int この期間中のこのデータベースの現在の最大データベース DTU 設定。 仮想コアベースのモデルを使用するデータベースの場合、この列は NULL.
cpu_limit decimal (5,2) この期間中のこのデータベースの仮想コアの数。 DTU ベースのモデルを使用するデータベースの場合、この列は NULL.
avg_instance_cpu_percent decimal (5,2) プールをホストしているデータベース エンジン インスタンスによる平均 CPU 使用率 (インスタンスの制限に対する割合)。 1 分単位で報告され、ユーザーと内部の両方のワークロードによる CPU 使用率が含まれます。
avg_instance_memory_percent decimal (5,2) データベースをホストしている SQL Server インスタンスの平均メモリ使用量。 ユーザーと内部の両方のワークロードによるメモリ使用率が含まれます。
avg_login_rate_percent decimal (5,2) 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
replica_role int 現在のレプリカ ロールを表します。

0 - プライマリ
1 - 高可用性 (HA) セカンダリ
2 - geo レプリケーション フォワーダー
3 - 名前付きレプリカ

意図に接続 ReadOnly されている場合、読み取り可能なセカンダリに 1 を 報告します。 意図を指定せずに geo セカンダリに接続する ReadOnly 場合は、geo レプリケーション フォワーダーへの接続を反映するように 2 を報告します。 意図を指定せずに名前付きレプリカに接続する ReadOnly 場合は、3 を報告します。

ヒント

これらの制限とサービス レベルの詳細については、「サービス レベル」、Azure SQL Database でのクエリ パフォーマンスの手動調整、および SQL Database のリソース制限とリソース ガバナンスに関するトピックを参照してください。

アクセス許可

このビューにはアクセス許可が必要です VIEW DATABASE STATE

解説

返される sys.dm_db_resource_stats データは、実行しているサービス レベル/パフォーマンス レベルで許可される上限に対する割合で表されます。

過去 60 分以内にデータベースが別のサーバーにフェールオーバーされた場合、ビューはそのフェールオーバー以降の時間のデータのみを返します。

保持期間が長いこのデータをより詳細に表示するには、Azure SQL Database のカタログ ビューを sys.resource_stats 使用します。 このビューでは、5 分ごとにデータがキャプチャされ、メイン 14 日間の履歴データが含まれます。 詳細については、「sys.resource_stats」を参照してください

データベースがエラスティック プールのメンバーである場合、パーセント値として示されるリソース統計は、エラスティック プール構成で設定されたデータベースの上限のパーセントとして表されます。

次の例では、Azure SQL Database または Azure SQL Managed Instance で現在接続されているデータベースの最新の時刻順に並べ替えられたリソース使用率データを返します。

SELECT * FROM sys.dm_db_resource_stats ORDER BY end_time DESC;

次の例では、過去 1 時間のユーザー データベースのパフォーマンス レベルで許容される DTU の上限に対する割合で平均 DTU 消費量を識別します。 これらの割合は一貫して 100% に近づくので、パフォーマンス レベルを上げることを検討してください。

SELECT end_time,
  (SELECT Max(v)
   FROM (VALUES (avg_cpu_percent), (avg_data_io_percent), (avg_log_write_percent)) AS
   value(v)) AS [avg_DTU_percent]
FROM sys.dm_db_resource_stats;

次の例では、過去 1 時間の CPU 使用率、データとログ I/O、メモリ消費量の平均値と最大値を返します。

SELECT
    AVG(avg_cpu_percent) AS 'Average CPU Utilization In Percent',
    MAX(avg_cpu_percent) AS 'Maximum CPU Utilization In Percent',
    AVG(avg_data_io_percent) AS 'Average Data IO In Percent',
    MAX(avg_data_io_percent) AS 'Maximum Data IO In Percent',
    AVG(avg_log_write_percent) AS 'Average Log Write I/O Throughput Utilization In Percent',
    MAX(avg_log_write_percent) AS 'Maximum Log Write I/O Throughput Utilization In Percent',
    AVG(avg_memory_usage_percent) AS 'Average Memory Usage In Percent',
    MAX(avg_memory_usage_percent) AS 'Maximum Memory Usage In Percent'
FROM sys.dm_db_resource_stats;