sys.dm_db_resource_stats(Azure SQL 数据库)
适用于:Azure SQL 数据库
返回Azure SQL 数据库中数据库的 CPU、I/O 和内存消耗量。 即使没有活动,也每 15 秒存在一行。 历史数据将保留大约一小时。
注意
sys.dm_db_resource_stats
Azure 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 设置。 对于使用基于 vCore 的模型的数据库,此列为 NULL 。 |
cpu_limit |
十进制 (5,2) | 此时间间隔内此数据库的 vCore 数。 对于使用基于 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;