我正在使用SQL Azure SQL Server来运行我的应用程序。最近数据库层一直表现良好,平均DTU使用率也得到了控制。但是在高峰期间,DTU会不断飙升并保持在100%。虽然升级到下一个层级是一种选择,但我首先想找出哪个查询导致了这种情况。在Azure中能否找到导致DTU飙升到100%的查询?
我正在使用SQL Azure SQL Server来运行我的应用程序。最近数据库层一直表现良好,平均DTU使用率也得到了控制。但是在高峰期间,DTU会不断飙升并保持在100%。虽然升级到下一个层级是一种选择,但我首先想找出哪个查询导致了这种情况。在Azure中能否找到导致DTU飙升到100%的查询?
简单来说,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才能使其正常工作。
如上面的屏幕截图所示,您可以查看每个查询的确切DTU使用情况。