查找在SQL Azure中增加DTU的查询

4

我正在使用SQL Azure SQL Server来运行我的应用程序。最近数据库层一直表现良好,平均DTU使用率也得到了控制。但是在高峰期间,DTU会不断飙升并保持在100%。虽然升级到下一个层级是一种选择,但我首先想找出哪个查询导致了这种情况。在Azure中能否找到导致DTU飙升到100%的查询?

1个回答

7

简单来说,DTU是根据服务层级提供的CPU、IO、内存混合体。如果有一列显示查询使用的DTU占总DTU的比例,那就太好了。

我将分两步处理此问题。

第一步:
找出哪个度量值始终超过90%。

--该DMV存储每15秒的DTU使用情况,最多可保存14天。

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 Utilization In Percent', 
    MAX(avg_log_write_percent) AS 'Maximum Log Write 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; 

步骤2:
如果您经常看到以上任何一种度量超过90%,则可以对这些查询进行调整。

例如,如果CPU使用率超过90%,则可以开始跟踪具有高CPU使用率的查询并对其进行调整。

截至20171701更新:
SQLAzure引入了查询性能洞察,显示查询使用的DTU。您需要启用Querystore才能使其正常工作。

enter image description here

如上面的屏幕截图所示,您可以查看每个查询的确切DTU使用情况。


1
如何找出哪个查询消耗了超过90%的CPU? - user2561997
谢谢。可以提取这些数据的时间段是多久?例如,如果在监视 DTU 时发现3小时前有一个峰值,运行此查询是否有帮助? - user2561997
如@user2561997所述,DMV会存储14天的数据。 - TheGameiswar
这个方法是否类似于 https://azure.microsoft.com/zh-cn/documentation/articles/sql-database-query-performance/ ? - CtrlDot
@CtrlDot:完全相同,但这不需要启用查询存储。 - TheGameiswar
显示剩余2条评论

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