sys.resource_stats (Azure SQL Database)

適用於:Azure SQL Database

傳回 Azure SQL 資料庫 中資料庫的 CPU、I/O 和記憶體耗用量。 每 15 秒就會有一個數據列,即使沒有活動也一樣。 歷程記錄數據大約會維護一小時。

注意

sys.dm_db_resource_statsAzure SQL 受控執行個體 不支援。 請改用 sys.server_resource_stats 目錄檢視。

資料行 資料類型 描述
end_time datetime UTC 時間表示目前報告間隔的結尾。
avg_cpu_percent 十進位 (5,2) 服務層級限制百分比的平均計算使用率。
avg_data_io_percent 十進位 (5,2) 服務層級限制百分比的平均數據 I/O 使用率。 如需超大規模資料庫,請參閱 資源使用率統計數據中的數據IO。
avg_log_write_percent 十進位 (5,2) 平均事務歷史記錄寫入(以 MB/秒為單位)作為服務層級限制的百分比。
avg_memory_usage_percent 十進位 (5,2) 平均記憶體使用率,以服務層級的限制百分比表示。

這包括用於緩衝池頁面的記憶體,以及記憶體內部 OLTP 物件的記憶體。
xtp_storage_percent 十進位 (5,2) 儲存體 記憶體內部 OLTP 使用率,以報告間隔結束時集區限制的百分比表示。 這包括用於儲存下列記憶體內部 OLTP 物件的記憶體:記憶體優化數據表、索引和數據表變數。 它也包含用於處理記憶體優化數據表上 ALTER TABLE 作業的記憶體。

如果未在資料庫中使用記憶體內部 OLTP,則傳回 0。
max_worker_percent 十進位 (5,2) 資料庫服務層級限制的最大並行背景工作角色(要求)百分比。
max_session_percent 十進位 (5,2) 資料庫服務層級限制的最大並行會話百分比。
dtu_limit int 此資料庫的目前最大資料庫 DTU 設定在此間隔期間。 對於使用以虛擬核心為基礎的模型的資料庫,此資料行為 NULL
cpu_limit 十進位 (5,2) 在此間隔期間,此資料庫的虛擬核心數目。 對於使用以 DTU 為基礎的模型的資料庫,此資料行為 NULL
avg_instance_cpu_percent 十進位 (5,2) 裝載集區的資料庫引擎實例的平均CPU使用率,以實例限制的百分比表示。 報告一分鐘的數據粒度,並包含用戶和內部工作負載的CPU使用率。
avg_instance_memory_percent 十進位 (5,2) 裝載資料庫的 SQL Server 實例的平均記憶體使用量。 包含使用者和內部工作負載的記憶體使用率。
avg_login_rate_percent 十進位 (5,2) 僅供參考之用。 不支援。 不保證未來的相容性。
replica_role int 表示目前的復本角色。

0 - 主要
1 - 高可用性 (HA) 次要
2 - 異地復寫轉寄站
3 - 具名複本

當與 ReadOnly 意圖連線到任何 可讀取次要複本時,報告 1。 如果在未指定 ReadOnly 意圖的情況下連接到異地輔助資料庫,則報告 2 以反映異地復寫轉寄站的連線。 如果在未指定 ReadOnly 意圖的情況下連接到具名複本,則報告 3。

提示

如需這些限制和服務層級的詳細資訊,請參閱服務層級、在 Azure SQL 資料庫 中手動調整查詢效能主題,以及 SQL 資料庫 資源限制和資源控管

權限

此檢視需要 VIEW DATABASE STATE 許可權。

備註

sys.dm_db_resource_stats 傳回的數據會以您所執行之服務層級/效能等級所允許限制的百分比表示。

如果資料庫在過去 60 分鐘內故障轉移至另一部伺服器,檢視只會傳回該故障轉移之後的時間數據。

對於此數據具有較長保留期限的較細微檢視,請使用 sys.resource_stats Azure SQL 資料庫 中的目錄檢視。 此檢視會每隔 5 分鐘擷取一次數據,並維護 14 天的歷史數據。 如需詳細資訊,請參閱 sys.resource_stats

當資料庫是彈性集區的成員時,以百分比值呈現的資源統計數據會以彈性集區組態中所設定的資料庫上限百分比表示。

範例

下列範例會針對 Azure 中目前連線的資料庫傳回最新時間所排序的資源使用率數據,SQL 資料庫 或 Azure SQL 受控執行個體。

SELECT * FROM sys.dm_db_resource_stats ORDER BY end_time DESC;

下列範例會根據過去一小時內用戶資料庫效能等級中允許的最大 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;

下列範例會傳回 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;