【问题标题】:MS SQL queries sometimes taking 500ms longerMS SQL 查询有时会多花 500 毫秒
【发布时间】:2017-09-01 12:14:37
【问题描述】:

我遇到了一些查询,这些查询有时比从服务器返回结果的时间要长 500 毫秒。 准确地说: 正常响应时间为 5-6 毫秒,与对服务器的 ping 时间相同。 SQL 探查器的正常查询持续时间约为 1 毫秒。 有时响应时间会上升到 500 毫秒左右。从不 300 或 400 毫秒,总是非常接近 500 毫秒。 SQL profiler 报告的实际查询持续时间仍然只有 1 毫秒左右。 我用 Wireshark 分析了网络流量,发现当我有 500 毫秒的响应时间时,我几乎立即收到了请求包的 ACK(在 5-6 毫秒的 ping 时间内)。这一定意味着服务器接收请求很快,不是网络相关的问题吧?

因此,由于某种原因,SQL 服务器接收到请求,但在执行查询之前等待或执行 SQL 探查器的“持续时间”中未包含的其他操作。 总是在 500 毫秒左右,这似乎很奇怪——这会给任何人带来任何关联吗? PS: 我也觉得SQL服务器这么快发送ACK可能有点奇怪?通常我希望它等待更长的时间,事实上,当响应时间很短时,就不会发送任何 ACK(只是在响应包上搭载)。

编辑:我正在循环测试这个。大多数响应很快,一小部分有这种延迟。延迟通常是分组的。 这是一个生产服务器,我认为它可能与同时发生的其他请求有关,但这让我感到困惑,为什么它总是延迟 500 毫秒,以及为什么它没有包含在分析器的 Duration 列中。

【问题讨论】:

  • 你如何衡量这些response times?
  • 我在客户端使用 System.Diagnostics.Stopwatch (C#) 进行测量。
  • 您是在客户端应用程序中发出许多请求还是只发出一个用于测试?
  • 啊,是的,我编辑了问题以澄清。
  • 这可能是很多事情。可能是表被锁定,sql 实例负载过重,网络拥塞......这个列表可能会一直持续下去。

标签: sql-server sql-server-2014 sql-server-profiler


【解决方案1】:

我们遇到了完全相同的问题,在我们的案例中,根本原因竟然是https://kb.vmware.com/s/article/2129176

由于这个问题在 Internet 上似乎非常罕见,我认为这很可能也是您的情况的原因。

【讨论】:

  • 谢谢。我现在在另一家公司,所以不再遇到这个问题,但是如果我再次遇到这个问题,我会看看它:)
【解决方案2】:

请查看等待统计信息。每当 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

https://www.brentozar.com/sql/wait-stats/

【讨论】:

猜你喜欢
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多