MS Access 将链接 table 更改为 AWS MySQL Db 变慢 forms/reports

MS Access changing linked table to AWS MySQL Db slows down forms/reports

我是一家公司的新角色,他们使用 MS Access 和 MySQL 数据库,该数据库位于 运行 服务器中,该服务器位于我们私人网络后面的办公室。我受雇开发一个全新的应用程序,以使公司达到现代标准。当我们将 features/modules 移动到我正在编写的新 Angular/NodeJs 应用程序时,用户仍然需要利用 MS Access 提供的 UI 到将在 AWS Lightsail 上的新生产数据库。 但是,当我更改 Ms Access 的配置时,OBDC 连接指向 AWS Lightsail MySQL Db,MS Access UI 中的所有内容(尤其是报告)变得比指向时慢MySQL Db 在办公室网络中。

我要去 "Linked Table Manager" 并更改 "Connection String"。 在我读到的某个地方,我应该确保禁用 SSLMODE 以消除任何性能问题。

DSN=AWS_Dev;DATABASE=ECSDataTables;PORT=3306;SERVER=IP_ADDRESS;SSLMODE=DISABLED;

我在 Windows 中完成了正常的 "ODBC Data Source Administrator" 并添加了 MySQL AWS 主机,user/pass 正常。

我进行了广泛的研究并找到了多个来源,但 none 确实很有帮助。

我被要求不要花太多时间尝试 fix/optimize MS Access 中的任何内容,因为我的重点应该放在新应用程序上,但很难相信 [=36= 的简单切换] 数据库能有这样的影响。在新的 Angular/NodeJs 应用程序中,一切都运行得非常快,所以我知道它不是 AWS MySQL 数据库或任何东西。

我是否遗漏了什么,我应该在 Ms Access 中进行的任何配置?我已经有大约十年没有使用 VB 了,所以我希望在这件事上不需要太多技术背景就可以做一些事情。

谢谢。

嗯,问题是您的局域网 (LAN) 大约是您的互联网连接速度的 10 倍,甚至更快。

您的低成本办公室网络很可能是 1 gig 位网络。 (100 碱基 T 很少见)。

但是,您的互联网高速连接可能是 10 兆比特。所以,你从 1000 到 10——慢了 100 倍。所以,3 秒现在变成了 300 秒。

我的意思是,连接速度这么慢,那么这里应该没有惊喜。

对于任何复杂的客户端连接报告,您可以做的是 sql 将 sql 查询转换为服务器端视图,link 转换为该视图。现在使用该视图作为报告的基础源。当然,您经常使用(对吗???)启动报告的现有 VBA 文件管理器现在只会从网络管道中提取所需的数据。访问报告(或表格)只会拉下您要求的内容——而不是整个 table。因此,您拥有的任何过滤器(使用打开报告命令的 where 子句)都将得到尊重。因此,您要么必须提取更少的数据,要么只是找到与您的局域网速度等级相似的东西(这种高速互联网很少见)。

本文概述了 LAN 与 WAN 的概念和速度问题:

http://www.kallal.ca//Wan/Wans.html

虽然上面的文章很老了,但今天互联网的速度差异大约快了 10 倍,但是从 100 baseT 到 1 gig bit base 的本地区域也是如此。

因此,事情变慢了,因为您使用的连接速度非常慢。越慢越慢!!!

编辑

虽然如前所述,access 只会提取您所要求的内容,但 access 客户端表现不佳的情况是 sql 涉及多个 table 的查询 - 通常客户端会弄乱什么它发送服务器端。如前所述,这种情况下的解决方案是采用视图服务器端。这意味着您将驱动报告的客户端查询移动到视图,并将 link 移动到该视图。对于单个 table 查询,您不会获得太多性能,但对于任何基于复杂(多 table 连接)的报告,然后使用视图将强制 sql 和“连接工作” sql 服务器端,这会带来巨大的性能提升。

嗯,在这种情况下,有限的知识只会产生比预期更糟糕的结果。
多年来,顶级 DBA 只是 "hate" Ms Access...他们只看到问题,您命名的问题...结束句是 "switch to a real Database engine"。
好吧,这产生了一个错误的假设,即 MsSQL、MySQL、Oracle、PostGreSQL 和其他数据库引擎在某种程度上是 "magic pill"...您只需将 BE 切换到上述 DBE 之一和您的所有问题会得到解决...就像那样。
DBE --Database Engine(如果您想调用其他方式,请随意)
错误
Ms Access 遵循与 DBE 不同的哲学,考虑到它的所有缺点和基于文件的 DBE 的主要事实,它做得非常好。
切换到另一个 DBE 将提供惊人的性能,如果且仅当您尊重您不使用 Access 的事实......只是不要对待例如。 MySQL 作为您的文件存储库,而不仅仅是 link table 并期望一切顺利...
想继续责怪 Access ...只需切换到另一个平台(.NET,PHP,Js,Java ...任您选择)...并做一个小应用程序来拉动所有像使用 Access 一样一次性处理您的数据。它肯定会崩溃或 没有响应...
所以不要再责怪 Access ...开始阅读如何充分利用两个世界,我很确定结果会让您感到惊讶...但我必须再次强调这不是 "magic pill" 解决方案...它涉及很多工作...规划、数据操作、规范化、代码更改以及最重要的是哲学的变化..
我建议通过选择这本书开始旅程:https://www.amazon.com/Microsoft-Access-Developers-Guide-Server/dp/0672319446(我不想抱怨它的旧版和 MsSQL ...先阅读然后再抱怨)
另请看一下我几年前制作的旧基准视频:https://www.linkedin.com/posts/tsgiannis_a-small-demo-of-connecting-ms-access-fe-to-activity-6392696633531858944-dsuU
最后但同样重要的是......几年前我做了一些测试,看看 "magic pill" 会对我公司的应用程序做什么......最简单的测试......
一个简单的 table,字段很少,但有大约 800 万条记录...只需显示它
访问 BE(本地)--> 1-2 秒内 运行...那很快
访问 BE(网络共享)--> 它会在几秒钟内 运行...不是那么快,但它是可用的
MSSQL BE (linked table)--> 有时它会得到结果有时它不会....慢......真的很慢..就像你煮咖啡然后喝点小东西走路。
MySQL BE (linked table)--> 它从未完成... "Not Responding"
超时 PostGreSQL BE (linked table)--> 它从未完成...超时 "Not Responding"

所以不要再责备 Access...开始工作并感到惊讶....