我正在将 Access 拆分数据库后端移至 MySQL 服务器。前端启动表单运行传递查询。加载启动表单需要 1.25 秒。如果没有查询,则为 0.05 秒。 我尝试在服务器端断开连接后运行查询。查询在 1.21 秒内完成。当打开连接后运行相同的查询时,它会在 0.016 秒内完成。
看来 Access 需要 1.2 秒才能打开新的 ODBC 连接。有没有办法加快速度?使用 mysqlslap,我每秒能够打开和删除 60 个连接,所以它实际上不应该花费 1.2 秒。
配置:
- MySQL 服务器在本地主机上运行,win 7 SP1(i5,足够的可用 RAM)。
- 客户端是 MS Access prof 2013 32 位(带有最新补丁)。
- 服务器是mysql-5.7.11-x64社区版。
- MySQL ODBC 驱动程序是 Unicode 5.3.4 版本,已安装 32 位和 64 位。
- 连接字符串没有有效的服务器/用户/密码:“ODBC;DRIVER={MySQL ODBC 5.3 Unicode Driver};SERVER=XXX;charset=UTF8;PORT=3309;DATABASE=movedb2;user=XXX;password=XXX; DFLT_BIGINT_BIND_STR=1;选项=4196410"
查询:
Dim r as recordset, db as database
Set db = currentdb
Set r = db.Openrecordset(ptqueryname)
我尝试了 select 1;
,但查询仍然在 1.2 秒内完成。
最佳答案
我的 ODBC 与 IPv6 可以正常工作:
防火墙中 MySQL 的端口 3306 用于 TCP 输入和 TCP6 输入;
在 Linux 中,将/etc/my.cnf 中的“bind-address = 127.0.0.1”更改为“#bind-address = 127.0.0.1”,我认为需要重新启动服务器;
MySQL 数据库(在 DirectAdmin 中)已获得您个人 IPv4 和/或 IPv6 的授权;
- 可以使用域名作为服务器名称,否则使用 IP 地址(括号内为 IPv6)。
此外: - MySQL 数据库的 MS Access VBA 模块中的参数字符串: 公共(public)常量 gloODBCParameters As String = "PORT=3306;SSLmode=verify-full;TextAsLongVarchar=0;UseDeclareFetch=0;LANGUAGE=us_english;INITSTMT=set wait_timeout=600;FOUND_ROWS=1";
- 32 位驱动程序 {MySQL ODBC 5.3 Unicode Driver} 在我的电脑上运行;
注意:出于隐私考虑,我的提供商经常切换我的 IPv6 地址。这是一个很好的设置,因此我不再使用固定的 IPv6 地址授权我的数据库。然后使用 IPv4 地址联系服务器。
关于mysql - Access MySQL ODBC连接打开缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35975670/