我正在尝试根据指标(Azure Portal中的“指标(预览)”选项卡)确定哪个查询正在导致我的工作停止,我看到:100%的DTU利用率,由CPU引起
在此期间,只要DTU达到上限,QDS所报告的查询就不会花费。
我知道指标视图报告的1分钟是正确的,因为来自用户端的操作花费了这么长时间,并且我可以在Web应用遥测中看到该应用在此时间段内没有响应。
那么如何确定达到DTU限制的查询?
P.S。 db是S0。
更新 @Alberto Morillo,我执行了查询,它运行了很多便宜的查询(〜2k)-total_worker_time的最大值在54k(54毫秒)内。另一方面,我看到等待状态受SOS_WORK_DISPATCHER支配。
这是否意味着查询被阻塞,因为调度程序无法以如此快的速度派生工人?
答案 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。