我遇到的一些查询有时会比从服务器返回结果要长500毫秒。 确切地说: 正常响应时间为5-6 ms,与服务器的ping时间相同。 SQL事件探查器的正常查询持续时间约为1毫秒。 有时响应时间会上升到500毫秒左右。从不300或400毫秒,总是非常接近500毫秒。 SQL事件探查器报告的实际查询持续时间仍然只有1毫秒左右。 我用Wireshark分析了网络流量,发现当我有500毫秒的响应时间时,我几乎立即收到请求包的ACK(在5-6毫秒的ping时间内)。这必须意味着服务器快速接收请求并且它不是网络相关问题吗?
因此,由于某种原因,SQL服务器收到请求,但是等待,或者执行其他不包含在"持续时间"在执行查询之前,从SQL事件探查器。 它总是在500毫秒左右似乎很奇怪 - 这是否为任何人创造了任何关联? PS: 我也觉得SQL服务器发送ACK如此之快可能有点奇怪?通常我会期望它等待一段时间,事实上当响应时间很短时,就不会发送ACK(只是捎带在响应包上)。
编辑:我在循环中测试它。大多数回复都很快,而且这个延迟很小。延迟通常是分组的。 这是一个生产服务器,我认为它可能与同时发生的其他请求有关,但令我困惑的是它为什么总是500毫秒延迟,以及为什么它不包括在持续时间内分析器中的列。
答案 0 :(得分:1)
我们遇到了完全相同的问题,在我们的案例中,根本原因是https://kb.vmware.com/s/article/2129176。
由于这个问题在Internet上似乎很少见,所以我认为这也可能是您的情况。
答案 1 :(得分:0)
请查看等待统计信息。每当SQL Server执行任何查询时,它都能够检查执行查询中的性能命中。您将不得不查询SQL Server以获取详细信息。它通过sys.dm_os_wait_stats提供,可以连接到其他表或视图以获取更多详细信息。
https://www.sqlskills.com/blogs/paul/wait-statistics-or-please-tell-me-where-it-hurts/
http://downloads.red-gate.com/simpletalk/whitepaper_wait_statistics.pdf