Azure SQL数据库查询存储中Duration是否包含Wait Time?
Azure SQL Database 查询存储 Duration 与 Wait Time 指标关系说明
明确结论:查询存储统计的 Duration 不包含 Wait Time,二者是独立统计的不同指标,这正是你观测到 Total Wait Time 数值大于 Total Duration 的核心原因。
二者的统计逻辑差异如下:
Duration(执行时长)仅统计查询实际在CPU上运行的时间总和,查询等待各类资源的闲置时间不会被计入该指标。如果是并行执行的查询,多个CPU核心同时运行的时间会累加计算,因此并行查询的Duration也可能超过查询从提交到返回的总墙钟时间。Wait Time(等待时长)统计的是查询全执行流程中,因等待IO、锁、内存、工作线程等各类资源而处于阻塞状态的时间总和。如果是多线程并行执行的查询,每个线程产生的等待时间也会分别统计后累加。
Total Wait Time 大于 Total Duration 属于正常现象,常见触发场景有两类:
- 单查询为IO密集型或存在严重锁冲突,查询执行过程中大部分时间都在等待资源,实际CPU运行时间很短,等待总时长自然高于运行时长。
- 并行查询场景下,多个工作线程的等待时间会分别统计后累加,如果多个线程同时处于等待状态,累加后的总等待时长会高于单维度统计的运行时长。
查询存储的Regressed Queries板块同时展示两个指标,就是为了方便区分查询性能回退的根因:如果Duration异常升高通常对应CPU负载过高问题,如果Wait Time异常升高通常对应资源阻塞类问题。
内容的提问来源于stack exchange,提问作者sinh
相关产品推荐
相关产品推荐

