【问题标题】:Why does a simple UPDATE statement sometimes take a few seconds to run?为什么一个简单的 UPDATE 语句有时需要几秒钟才能运行?
【发布时间】:2012-01-25 14:54:15
【问题描述】:

当页面执行超过一两秒时,我们的网络应用程序会自动向我们发送电子邮件,其中包含运行每个 SQL 语句的时间。我们跟踪每个用户在每次页面加载时浏览的页面,并且这个查询有时需要几秒钟才能运行(我们收到许多这样的自动电子邮件,告诉我们一个页面同时花费了超过几秒钟的时间)。

UPDATE whosonline
SET datetime = GETDATE(),
    url = '/user/thepage'
WHERE username = 'companyname\theusername (0123456789)'

任何想法可能导致这种情况?通常它会在瞬间运行,但每周大约需要 2 或 3 秒,时间跨度可能为 10 秒。

【问题讨论】:

  • 听起来页面执行需要几秒钟,而不一定是 UPDATE 语句...正确吗?
  • 也许你已经启用了自动增长,当你需要增长你的数据库文件时,你的延迟就会发生。
  • 也可能被另一个进程阻塞。
  • @Yuck 这是数据库语句 - 数据库连接、运行语句、获取结果和关闭连接所需的时间。在同时到达的 10 封电子邮件中(都来自不同的在线用户),对于这个特定的 SQL 语句,它总是延迟。
  • 在这种情况下,我和@MikaelEriksson 在一起 - 您的数据库很可能正在经历文件增长。您应该预先调整数据库大小,以防止在生产环境中发生这种情况。

标签: sql sql-server performance


【解决方案1】:

这是一个非常广泛的问题,可能有多种原因:

  1. 这种情况发生在一周中的哪一天/时间有规律吗?也许你的 db 机器刚刚出现

  2. 您有多少用户?数据库有索引吗?

  3. 数据库缓存呢?配置好了吗?

  4. 您怎么知道这是数据库延迟而不是网络延迟?您是否尝试过从本地数据库服务器访问并查看延迟是否也发生在那里?

【讨论】:

  • 恕我直言,在您有足够的信息提供具体答案之前,这些可能应该是 cmets。
  • @Yuck 据我所知,这些都是非常好的答案。
【解决方案2】:

如果您有权访问 SQL Profiler,您可能希望在语句上运行它,以查看服务器上是否发生了可能导致问题的任何事情。如果可以的话,我还会检查 Management Studio/Query Analyzer 中的执行路径。否则,如果这些没有出现任何内容,则可能与 Web 端有关,而不是 SQL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 2016-02-13
    相关资源
    最近更新 更多