只有从代码调用时才建立极慢的mysql连接

时间:2016-09-25 07:21:26

标签: c# mysql amazon-web-services

我目前正在尝试做一些应该简单直接的事情 - 连接到数据库服务器,运行查询,看看我是否收到任何回报,如果是,请将其发回给用户。这是我用来做的代码:

MySqlDataReader reader = MySqlHeaper.ExecuteReader(connectionString, $"SELECT * FROM table WHERE insertDateTime > '{DateTime.Now.AddSeconds(-1800).ToString("yyyy-MM-ddTHH:mm:ss")}'";

我还尝试使用MySqlCommandMySqlConnection对象,并且结果是相同的 - 连接到MySql服务器大约需要7100ms。我知道这听起来应该是ServerFault上的问题,但是我的测试告诉了我。当我使用命令行MySql客户端使用完全相同的凭据连接到我的数据库服务器并运行完全相同的查询时,我建立了连接并且我的数据没有任何平坦。我不知道现阶段是否是服务器设置,但这是我到目前为止所尝试的内容:

  • 重新启动服务器
  • 重新启动MySQL服务器
  • 将skip_name_resolve设置为1,以防止在连接上进行反向名称查找
  • 使用查询服务器的替代方法(mysql命令行客户端和MySQL Workbench)
  • 在RDS实例上打开所有AWS IAM权限以允许来自服务器的所有内容

似乎没有什么区别,所以我无法解释这种可怕的表现。它也只有在我打开连接时才会发生。运行查询,插入,你有什么快速闪电。任何人可能提出的建议都会有所帮助。

2 个答案:

答案 0 :(得分:0)

我不希望IAM权限对性能产生任何影响。我希望它们要么成功要么不成功。

我会执行一些诊断协议以获取更多信息。

1)尝试后续查询,看看是否存在初始化堆栈的问题。后续查询更快吗? 2)尝试只是身份查询的查询。某些不需要任何IO的东西。 3)尝试从不同平台(可能是ruby或php等脚本语言)的查询

一旦你回答了这些问题,就应该帮助你缩小范围。

答案 1 :(得分:0)

这很可能是由Connector / NET在打开连接时执行慢WMI查询以查询连接属性引起的;这记录为MySQL bug 80030

据我所知,这并没有在较新版本的驱动程序中修复,但您可以通过切换到OSS MySQL ADO.NET库MySqlConnector来解决这个问题。