【问题标题】:TADOStoredProc/TADOQuery CommandTimeout...?‏TADStoredProc/TADOQuery CommandTimeout...?‏
【发布时间】:2013-06-01 16:36:33
【问题描述】:

在客户端上引发错误“超时”以触发针对数据库的一些命令。

我的第一个更正测试选项是将 CommandTimeout 增加到 99999 ...但我担心这种处理会产生更多问题。

经历过...? 我想知道我的问题是否相关,和/或是否有其他更强大和优雅的更正选项。

【问题讨论】:

    标签: sql sql-server delphi timeout delphi-7


    【解决方案1】:

    您认为增加超时不是正确的方法是正确的。通常,我会查找在超时前后运行的日志运行查询。它们通常会在时长和阅读方面脱颖而出。

    然后我将使用这种方法来减少查询运行时间:

    https://www.simple-talk.com/sql/performance/simple-query-tuning-with-statistics-io-and-execution-plans/

    如果它是导致问题的报告并且您无法使其运行得更快,您可能需要开始考虑设置报告数据库。

    【讨论】:

      【解决方案2】:

      CommandTimeout 是客户端等待服务器响应的时间。如果查询在主 VCL 线程中运行,则整个应用程序被“冻结”并且可能被 Windows 标记为“无响应”。那么,您是否希望您的用户在冻结的应用程序处等待 99999 秒?

      通常,将超时值保留为默认值,而是按照 Sam 的建议专注于调整查询。如果您碰巧有长时间运行的查询(即存储过程中的一些后台数据移动、计算等),请将 CommandTimeout 设置为 0 (=INFINITE),但在单独的线程中运行它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多