sys.dm_exec_background_job_queue_stats

对于每个为异步(后台)执行而提交的查询处理器作业,相应地返回一行,以提供聚合统计信息。

列名

数据类型

说明

queue_max_len

int

最大队列长度。

enqueued_count

int

成功投递到队列的请求数。

started_count

int

已经开始执行的请求数。

ended_count

int

最终成功或失败的请求数。

failed_lock_count

int

由于锁争用或死锁而失败的请求数。

failed_other_count

int

由于其他原因而失败的请求数。

failed_giveup_count

int

由于已达到重试限制而失败的请求数。

enqueue_failed_full_count

int

由于队列已满而失败的排队尝试的数字。

enqueue_failed_duplicate_count

int

复制排队尝试的数字。

elapsed_avg_ms

int

请求的平均占用时间(毫秒)。

elapsed_max_ms

int

最长请求的占用时间(毫秒)。

注释

该视图只返回有关异步更新统计作业的信息。有关异步更新统计的详细信息,请参阅使用统计信息提高查询性能

权限

需要对服务器具有 VIEW SERVER STATE 权限。

示例

A. 确定失败的后台作业的百分比。

以下示例针对所有已执行查询返回失败的后台作业的百分比。

SELECT 
        CASE ended_count WHEN 0 
                THEN 'No jobs ended' 
                ELSE CAST((failed_lock_count + failed_giveup_count + failed_other_count) / CAST(ended_count AS float) * 100 AS varchar(20)) 
        END AS [Percent Failed]
FROM sys.dm_exec_background_job_queue_stats;
GO

B. 确定失败的排队尝试的百分比。

以下示例针对所有已执行查询返回失败的排队尝试的百分比。

SELECT 
        CASE enqueued_count WHEN 0 
                THEN 'No jobs posted' 
                ELSE CAST((enqueue_failed_full_count + enqueue_failed_duplicate_count) / CAST(enqueued_count AS float) * 100 AS varchar(20)) 
        END AS [Percent Enqueue Failed]
FROM sys.dm_exec_background_job_queue_stats;
GO