gpt4 book ai didi

delphi - TSQLConnection.Connect with InterBase 7.5 奇怪的三分钟延迟

转载 作者:可可西里 更新时间:2023-11-01 02:33:12 32 4
gpt4 key购买 nike

环境:

  • Delphi 2009 客户端应用程序(和一个 Java),在 Windows 2003 服务器上运行
  • 通过 dbExpress 连接到 InterBase 7.5.1(另一个 Windows 2003 服务器)

Delphi 应用程序使用 TSQLConnection 对象的 AfterConnect 事件处理程序记录打开 TSQLConnection 的时间。

在随机间隔中,连接需要三分钟的“额外时间”。我最初怀疑这可能是 SQL 查询的问题,但今天更详细的日志记录显示它是挂起的 SQLConnection.Connect

我不确定这是否是网络、InterBase 服务器或 Delphi/dbExpress 层的问题。

有没有人经历过类似的三分钟“挂起”?

附注Java 应用程序不记录连接时间,所以我不能说它是否受到此问题的影响。


这种现象从我们2012年开始记录日志文件开始就出现了,但是上个月这个频率急剧上升。唯一的环境变化是添加了新的 Windows 服务器(用于 RDP 服务、邮件和传真),因此这可能是与网络相关的问题。

最佳答案

除了可能的网络问题之外,延迟的原因可能是,您的查询有时会在它查询的其中一个表中触发垃圾回收。

我不太了解 Interbase 7.5 的内部结构,但根据我的经验(使用 Firebird),这通常发生在 select是在最近删除/更新了许多记录的表上创建的。

This doc at IBExpert.net解释一下:

A garbage collection is only performed during a database sweep, database backup or when a SELECT query is made on a table (and not by INSERT, ALTER or DELETE). Whenever Firebird/InterBase® touches a row, such as during a SELECT operation, the versioning engine sweeps out any versions of the row where the transaction number is older than the Oldest Interesting Transaction (OIT). This helps to keep the version history small and manageable and also keeps performance reasonable.

在低使用时间进行定期清理或备份,可以提高性能并最大限度地降低被不方便的垃圾收集击中的风险。请参阅 Interbase 7.5 Operations Guide 上的扫描间隔和自动管理(第 6-20 页)和促进垃圾收集(第 11-19 页)有关这方面的更多信息。

关于delphi - TSQLConnection.Connect with InterBase 7.5 奇怪的三分钟延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18527993/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com