sys.resource_stats(Azure SQL 数据库)

适用于:Azure SQL 数据库

返回 Azure SQL 数据库中数据库的 CPU 使用率和存储数据。 在五分钟间隔内收集并聚合数据。 对于每个用户数据库,每五分钟报告窗口有一行,其中资源消耗量发生了变化。 返回的数据包括 CPU 使用率、存储大小更改和数据库 SKU 修改。 没有更改的空闲数据库可能每五分钟间隔一次没有行。 历史数据保留大约 14 天。

注意

此动态管理视图仅适用于Azure SQL 数据库。 对于Azure SQL 托管实例的等效视图,请使用sys.server_resource_stats

列数 数据类型 描述
start_time datetime 指示五分钟报告间隔开始的 UTC 时间。
end_time datetime 指示五分钟报告间隔结束的 UTC 时间。
database_name nvarchar(128) 用户数据库的名称。
sku nvarchar(128) 数据库的服务层。 下面是可能的值:

基本

标准

高级

常规用途

业务关键
storage_in_megabytes float 时间段的最大存储大小(包括数据库数据、索引、存储过程和元数据)。
avg_cpu_percent 十进制(5,2) 平均计算使用率(以服务层限制的百分比表示)。
avg_data_io_percent 十进制(5,2) 平均 I/O 使用率(以基于服务层限制的百分比表示)。 有关超大规模数据库,请参阅 资源利用率统计信息中的数据 IO。
avg_log_write_percent 十进制(5,2) 平均写入资源使用率(以服务层限制的百分比表示)。
max_worker_percent 十进制(5,2) 基于数据库服务层级的限制,最大并发辅助角色(请求)百分比。

目前,根据并发工作器计数的 15 秒样本计算 5 分钟间隔的最大值。
max_session_percent 十进制(5,2) 基于数据库服务层级的限制,最大并发会话百分比。

目前,根据并发会话计数的 15 秒样本计算 5 分钟间隔的最大值。
dtu_limit int 此时间间隔内此数据库的当前最大数据库 DTU 设置。
xtp_storage_percent 十进制 (5,2) 存储内存中 OLTP 的利用率(以服务层限制(报告间隔结束时)的百分比表示。 这包括用于存储以下内存中 OLTP 对象的内存:内存优化表、索引和表变量。 它还包括用于处理 ALTER TABLE 操作的内存。 有关详细信息,请参阅 “监视内存中 OLTP”。

如果未在数据库中使用内存中 OLTP,则返回 0。
avg_login_rate_percent 十进制 (5,2) 标识为仅供参考。 不支持。 不保证以后的兼容性。
avg_instance_cpu_percent 十进制 (5,2) 作为SQL 数据库进程的百分比的平均数据库 CPU 使用率。
avg_instance_memory_percent 十进制 (5,2) 作为SQL 数据库进程的百分比的平均数据库内存使用量。
cpu_limit 十进制 (5,2) 此时间间隔内此数据库的 vCore 数。 对于使用基于 DTU 的模型的数据库,此列为 NULL。
allocated_storage_in_megabytes float 可用于存储数据库数据的格式化文件空间量(以 MB 为单位)。 格式化的文件空间也称为分配的数据空间。 有关详细信息,请参阅:SQL 数据库中的文件空间管理

提示

有关这些限制和服务层级的更多上下文,请参阅主题 “服务层”。

权限

在Azure SQL 数据库中,此视图可供有权连接到虚拟master数据库的所有用户角色使用。

注解

返回 sys.resource_stats 的数据表示为正在运行的服务层/性能级别允许的最大限制的百分比。

当数据库是弹性池的成员时,资源统计信息显示为百分比值,表示为弹性池配置中设置的数据库的最大限制百分比。

若要更精细地查看此数据,请使用 sys.dm_db_resource_stats 用户数据库中的动态管理视图。 此视图每 15 秒钟捕获一次数据,并将历史数据保留 1 个小时。 有关详细信息,请参阅sys.dm_db_resource_stats(Azure SQL 数据库)。

注意

有关使用动态管理视图排查 CPU 使用率问题的详细信息,请参阅识别Azure SQL 数据库性能中的 CPU 性能问题,或识别Azure SQL 托管实例性能中的 CPU 性能问题。

若要查看最近的内存不足事件,请使用 sys.dm_os_out_of_memory_events

示例

必须连接到master逻辑服务器上的数据库才能查询sys.resource_stats

以下示例返回过去一周内平均 CPU 利用率至少为 80% 的所有数据库。

DECLARE @s datetime;  
DECLARE @e datetime;  
SET @s= DateAdd(d,-7,GetUTCDate());  
SET @e= GETUTCDATE();  

SELECT database_name, AVG(avg_cpu_percent) AS Average_CPU_Utilization   
FROM sys.resource_stats   
WHERE start_time BETWEEN @s AND @e  
GROUP BY database_name  
HAVING AVG(avg_cpu_percent) >= 80;
GO

另请参阅

后续步骤

通过以下文章详细了解相关概念: