- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
环境:
Delphi 应用程序使用 TSQLConnection
对象的 AfterConnect 事件处理程序记录打开 TSQLConnection
的时间。
在随机间隔中,连接需要三分钟的“额外时间”。我最初怀疑这可能是 SQL 查询的问题,但今天更详细的日志记录显示它是挂起的 SQLConnection.Connect
。
我不确定这是否是网络、InterBase 服务器或 Delphi/dbExpress 层的问题。
有没有人经历过类似的三分钟“挂起”?
附注Java 应用程序不记录连接时间,所以我不能说它是否受到此问题的影响。
这种现象从我们2012年开始记录日志文件开始就出现了,但是上个月这个频率急剧上升。唯一的环境变化是添加了新的 Windows 服务器(用于 RDP 服务、邮件和传真),因此这可能是与网络相关的问题。
最佳答案
除了可能的网络问题之外,延迟的原因可能是,您的查询有时会在它查询的其中一个表中触发垃圾回收。
我不太了解 Interbase 7.5 的内部结构,但根据我的经验(使用 Firebird),这通常发生在 select
是在最近删除/更新了许多记录的表上创建的。
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/
我有用于检索数据库表字段名称的Delphi 2005代码。 它可以在32位计算机(Windows XP,Windows Vista,Windows 7)上正常工作。 但是,在64位计算机(Window
StackOverflowers 的 friend 们大家好, 目前我面临的情况是,Delphi 中的 TSQLConnection 对象的 Database 属性似乎有最大长度。 当我打开与数据库的
我正在使用 C++ Builder(或 Delphi 2007 和 XE2)以及 DBExpress。我连接了两个数据库,一个用于 firebird(我的本地硬盘),一个用于 MySQL(在 Web
使用Delphi XE2中的TSQLConnection组件连接到DataSnap服务器。 我的问题是,如果 3 秒后无法连接,我想中止连接尝试,但是设置驱动程序的 ConnectTimeout 属性
我在我的应用程序中使用 Delphi XE2 和 dbExpress。在开发过程中,我发现我需要安装 SQL Native 客户端才能在 dbExpress 连接设置中使用 MSSQL 作为驱动程序(
我有一个使用 Delphi XE2 编写的简单控制台应用程序。 program Project1; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUti
我使用 TSQLConnection 连接到 MySQL 数据库,我在运行时使用 SQLConnectionMySQL->Params-Add("...") 添加所需的连接参数。这可以正常工作。 现在
环境: Delphi 2009 客户端应用程序(和一个 Java),在 Windows 2003 服务器上运行 通过 dbExpress 连接到 InterBase 7.5.1(另一个 Windows
我正在尝试使用 Delphi Xe5 和 Fire Monkey 移动应用程序连接到 MySQL 数据库。我正在使用 TSQLConnection 连接到数据库,但收到错误 DBX 错误:驱动程序无法
使用 Delphi IDE 时,在填充各种属性中的字段或表列表时,它会默默地将 SQLConnection.Connected 更改为“true”。 由于我不想使用 Connected = true
我一直在测试 Delphi XE2 附带的新 ODBC dbExpress 驱动程序,并注意到 TSQLMonitor 似乎不起作用。我认为我可能错误地配置了该组件,因此将 TSQLMonitor 连
我只是好奇为什么你可以在表单上放置 TSQLConnection ,它会将 Left 和 Top 属性添加到 .dfm: object Form1: TForm1 ... object SQL
我是一名优秀的程序员,十分优秀!