【问题标题】:Access to MySQL ODBC connection opens slowly访问 MySQL ODBC 连接打开缓慢
【发布时间】:2016-03-13 20:49:54
【问题描述】:

我正在将我的访问拆分数据库后端移动到 MySQL 服务器。前端启动表单运行一个 pass-trough 查询。加载启动表单需要 1.25 秒。如果没有查询,则为 0.05 秒。 在服务器端断开连接后,我尝试运行查询。查询在 1.21 秒内完成。在打开连接后运行相同的查询时,它会在 0.016 秒内完成。

看来,Access 需要 1.2 秒才能打开一个新的 ODBC 连接。有没有办法加快速度? 使用 mysqlslap 我能够每秒打开和断开 60 个连接,所以它真的不需要 1.2 秒。

配置:

  • MySQL 服务器在 localhost 上运行,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;option=4196410"

查询:

Dim r as recordset, db as database
Set db = currentdb
Set r = db.Openrecordset(ptqueryname)

我用select 1; 尝试过,但查询仍然在 1.2 秒内完成。

【问题讨论】:

  • 我们看不到您发布的代码。打开连接语句在哪里? ptqueryname中有什么内容@
  • 尝试删除所有非强制参数。此外,端口 3309 看起来很奇怪。默认为 3306。错字?
  • @Thomas G 没有打开连接声明。 ptqueryname 是一个直通查询。使用 Openrecordset 运行传递槽查询将隐式打开 ODBC 连接。该连接可以在 MySQL Workbench 会话列表中看到。查询完成后,MS Access 会保持该连接打开。上面列出了连接字符串。我已经用“select 1;”替换了原来的 ptqueryname.SQL,但它并没有加快这个过程。 Openrecordset 语句位于从启动窗体的 Load 事件调用的函数中。该函数位于通用 VBA 模块中。
  • @Gustav 我正在使用更多,然后是一个用于开发的 MySQL 服务器。这个有 3309。我想设置一个复制从站,并运行一些 Mariadb 与 MySQL 的性能测试。如果有帮助,我将尝试使用最小连接字符串来查看。明天这里是国定假日,所以我会在星期三试试。
  • @Gustav 删除所有非强制性参数并没有帮助。但是,当我用“localhost”或数字 IP 替换 SERVER 名称时,连接打开得很快。所以延迟的根本原因一定是 ODBC 驱动程序和服务器名称解析。

标签: mysql ms-access odbc


【解决方案1】:

我得到了支持 IPv6 的 ODBC:

  • 防火墙中 MySQL 的端口 3306,用于 TCP In 和 TCP6 In;

  • 在 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 Const 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 地址联系服务器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多