那里。
当使用 Firedac 连接到在 VPS 上运行的 PostgreSQL 9.4 数据库时,我遇到了一些奇怪的行为。我的 delphi 是 Sidney 10.4.2,但我也在西雅图做过测试,遇到同样的问题。
我有一个测试可执行文件,它连接到在 Ubuntu VPS 上运行的 PostgreSQL 9.4。我对这个 VPS 的 ping 大约是 20 毫秒,而且它很稳定。本VPS为测试服务器,仅供本人使用。没有人与之相关。
在测试可执行文件中,有 11 个不同的查询,每个查询从同一数据库的表中选择行。这些查询返回从零到 2 条记录(取决于表)(我的意思是,我们这里的结果集非常小)。
我的问题是:如果我有一个可执行文件连接到 VPS 上的数据库,在表上执行“选择”,在同一台机器和 Internet 链接上运行,为什么有时执行需要很多,有时执行速度很快?
有人可能会说:“也许您的 Internet 链接不稳定”或“也许您的服务器中正在运行一些高 CPU 使用率的作业”。但是,如果这是真的,如果我打开可执行文件的两个实例,两者都应该很慢,对吗?
如果我打开同一个exe的两个实例,一个快,另一个慢,顺序不完全一样。
为了消除可能的原因,我使用 ZeosLib 创建了相同的可执行文件,以比较它们。在这种情况下,Zeoslib 似乎比 Firedac 稳定得多。
顺便说一下,为了更好地表达我的意思,我录制了一段视频。链接是:
在这个视频中,我打开两个 Firedac exe 实例和两个 Zeoslib exe 实例来比较它们。您可能会注意到,Firedac exe 表现出奇怪的行为,而 Zeoslib exe 表现出稳定的行为。
请记住:数据库服务器、数据库和查询在所有情况下都完全相同。所有查询控件(TFQQuery 或 TZQuery)的属性都相同。
有人知道如何在 Firedac 可执行文件中解决这个问题吗?
先谢谢你,
莱安德罗