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

4

在了解如何检查DTUs之后,我现在有以下查询(基于以下MSDN文章中的查询:https://azure.microsoft.com/en-us/documentation/articles/sql-database-upgrade-new-service-tiers/

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;

我希望您能将其修改为在服务器上运行的所有数据库,这意味着我想删除where database_name并使用group by,但似乎我太久没有使用真正的SQL了,错过了一些东西。
有没有一种方法可以在内部查询之前对数据进行分区,以便我可以轻松地获取数据?
1个回答

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

将获取最高记录的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

每五分钟会给您提供一个列表,以便您可以查看数据范围。

谢谢,这个很好用。而且使用了微软建议的另一部分,我甚至能够让它为我写下推荐的层级。 - Srgrn
1
对于那些进入了这篇较旧的帖子的人,Azure数据库有一个新视图。它不会返回数据库名称,但您可以始终从DB_NAME()变量中获取它。请查看Microsoft页面此处 - Pimenta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接