DTU最大化时,QDS不显示任何内容

时间:2018-08-08 07:57:15

标签: sql-server azure azure-sql-database

我正在尝试根据指标(Azure Portal中的“指标(预览)”选项卡)确定哪个查询正在导致我的工作停止,我看到:100%的DTU利用率,由CPU引起 enter image description here

但是当我进入QDS时,会看到另外一张图片: enter image description here

在此期间,只要DTU达到上限,QDS所报告的查询就不会花费。

enter image description here

我知道指标视图报告的1分钟是正确的,因为来自用户端的操作花费了这么长时间,并且我可以在Web应用遥测中看到该应用在此时间段内没有响应。

那么如何确定达到DTU限制的查询?

P.S。 db是S0。

更新 @Alberto Morillo,我执行了查询,它运行了很多便宜的查询(〜2k)-total_worker_time的最大值在54k(54毫秒)内。另一方面,我看到等待状态受SOS_WORK_DISPATCHER支配。

这是否意味着查询被阻塞,因为调度程序无法以如此快的速度派生工人?

1 个答案:

答案 0 :(得分:0)

请运行以下查询:

SELECT TOP 10 q.query_id, p.plan_id, 
rs.count_executions, 
qsqt.query_sql_text,
CONVERT(NUMERIC(10,2), (rs.avg_cpu_time/1000)) as 'avg_cpu_time_seconds',
CONVERT(NUMERIC(10,2),(rs.avg_duration/1000)) as 'avg_duration_seconds',
CONVERT(NUMERIC(10,2),rs.avg_logical_io_reads ) as 'avg_logical_io_reads',
CONVERT(NUMERIC(10,2),rs.avg_logical_io_writes ) as 'avg_logical_io_writes',
CONVERT(NUMERIC(10,2),rs.avg_physical_io_reads ) as 'avg_physical_io_reads',
CONVERT(NUMERIC(10,0),rs.avg_rowcount ) as 'avg_rowcount'
from sys.query_store_query q  
JOIN sys.query_store_plan p ON q.query_id = p.query_id 
JOIN sys.query_store_runtime_stats rs ON p.plan_id = rs.plan_id
INNER JOIN sys.query_store_query_text qsqt
  ON q.query_text_id = qsqt.query_text_id
WHERE rs.last_execution_time > dateadd(hour, -1, getutcdate())
ORDER BY rs.avg_duration DESC

将ORDER BY子句更改为avg_cpu_time和avg_rowcount。