【发布时间】:2019-07-09 04:37:36
【问题描述】:
继承的应用程序随着时间的推移正在转换到新平台。但是,与此同时,正在寻找简单的修复程序来提高高延迟连接的性能。在某些情况下,需要几秒钟的操作在远程站点上可能需要 10 分钟。
经过分析,主要问题是同一个记录集被DAO打开了数百次,每次打开记录集的尝试都在发起对文件共享托管MDB文件的回调。由于连接的高延迟,这些多次调用是昂贵的操作。
MDB 文件本身通常很小,通常为几 MB,这些文件只能为打开文件的用户独占打开。
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = DAO.OpenDatabase("<path to mdb>", True, False, "")
Set rs = db.OpenRecordset("Data")
关于更好地缓存数据或以最少的重新编码减少网络流量的选项的任何建议。
虽然不需要使用 DAO,但理想情况下,任何替代方法都可以轻松替换为 DAO。
【问题讨论】:
-
Mode=Share Deny Write至少可以避免创建和更新锁定文件 (.LDB),但我不确定还能做些什么。 -
您必须告诉我们数据是如何使用的,然后我们可能会告诉您如何优化它。它是只读的还是有很多写入?您是经常重新打开数据库,还是使用某种方式从单个数据库实例中打开这数百个记录集?
-
复制到本地,工作,复制回来?
-
您的远程用户是否都需要更新数据库,或者他们只是在运行查询?
-
数据库已更新,但可以在点击“保存”时更新