获取 Azure SQL 数据库上所有数据库的平均 DTU

Srg*_*grn 4 t-sql sql-server azure azure-sql-database

阅读有关如何检查 DTU 后,我现在有以下查询(基于以下 MSDN 文章中的查询:https : //azure.microsoft.com/en-us/documentation/articles/sql-database-upgrade-new -服务层/ )

Select avg(unsum) as avg_DTU_percent,database_name from (
 SELECT start_time,(SELECT Max(v)
     FROM (VALUES (avg_cpu_percent)
                , (avg_physical_data_read_percent)
                , (avg_log_write_percent)
       ) AS value(v)) AS [unsum],database_name
FROM sys.resource_stats
WHERE database_name = '<DBNAME>')as rc GROUP BY database_name;
Run Code Online (Sandbox Code Playgroud)

我想修改它以在服务器中的所有数据库上运行,这意味着我想删除 where database_name 并使用 group by 但我似乎没有使用真正的 sql 太久并且缺少一些东西

有没有办法在内部查询之前对数据进行分区,以便我可以轻松获取数据?

cba*_*ear 5

SELECT database_name
 ,(SELECT Max(v)
     FROM (VALUES (max(avg_cpu_percent))
                , (max(avg_data_io_percent))
                , (max(avg_log_write_percent))
       ) AS value(v)) AS [max_DTU_percent]
FROM sys.resource_stats group by database_name
Run Code Online (Sandbox Code Playgroud)

将获取记录的最高 DTU 百分比。

SELECT start_time, end_time, database_name
 ,(SELECT Max(v)
     FROM (VALUES (avg_cpu_percent)
                , (avg_data_io_percent)
                , (avg_log_write_percent)
       ) AS value(v)) AS [max_DTU_percent]
FROM sys.resource_stats
ORDER BY end_time
Run Code Online (Sandbox Code Playgroud)

每五分钟会给你一个列表,这样你就可以看到数据的范围。