SQL Server链接服务器到MySQL"连接太多"

时间:2016-09-29 16:17:47

标签: mysql sql-server database

我试图在这里找到答案并通过Google了解如何控制链接服务器ODBC连接的连接。

概述

我有一个从SQL Server 2014到MySQL的链接服务器,用于为我们的数据仓库提取数据。我已经多次查询数据库而没有问题。然后昨天,突然从表中读取的查询很慢,然后我得到报告说使用这个MySQL数据库的应用程序正在获得太多连接"错误。

详细

以下查询从MySQL中选择数据并插入SQL Server表。

INSERT INTO tmpCustomers
    (fieldlist)
SELECT 
    myc.contact_id,
    myl.franchise_id,
    myl.lead_source,
    LEFT(RTRIM(myc.first_name) + ' ' + RTRIM(myc.last_name),100) AS Name,
    myc.first_name,
    myc.last_name,
    myc.company,
    myc.Email,
    myc.primary_phone,
    myc.home_phone,
    myc.mobile_phone,
    myc.work_phone,
    myc.fax,
    myc.address1,
    myc.Address2,
    myc.City,
    myc.[state],
    myc.zip_code,
    myc.created_date,
    myc.updated_date
FROM [MYSQLDB]...[franchise] myf
INNER JOIN  [MYSQLDB]...[leads] myl
    ON myl.franchise_id = myf.franchise_id
INNER JOIN  [MYSQLDBE]...[contact] myc
    ON myc.contact_id = myl.contact_id

此查询返回大约200K行数据,并且会增长。 MySQL数据库由我们的客户群使用,这是一个将数据提取到数据仓库的后端流程。

在过去一周的测试中,查询一直没有问题,直到昨天,它导致我们的MySQL支持重启MySQL服务器两次。

使用" mysql-connector-odbc-5.3.6-win64.msi"完成ODBC设置。版。我在那里找不到任何设置来限制连接数。 ODBC确实显示"允许多个语句",但事实并非如此。它还有"启用自动重新连接",我无法想象为什么需要单个查询。

摘要

我无法阻止客户进行连接,并且需要在执行导入时禁止使用过多的连接。

对此的任何意见都将不胜感激。

由于

KDS

更新:2016年10月5日

AWS服务器 - M3.xlarge 4个CPU 15 GiB 2个40 GiB SSD驱动器

2 个答案:

答案 0 :(得分:0)

如果您无法阻止客户连接,那么优化MySQL服务器会更好。

有了这么多信息,很难为MySQL优化提供优化或建议。 https://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html

最好更新配置文件。如果您使用的是innoDB,则可以使用max_connections限制和InnoDB变量。还有RAM。

您能否在问题部分更新上述信息。

答案 1 :(得分:0)

我打算将此标记为已解决,因为它已经过了大约一年而且没有真正的解决方案。当SQL Server链接服务器正在读取数据时,问题是MySQL服务器上的锁定。像NOLOCK这样的SQL Server参数对解决这个问题没有影响。

所以,所做的是每晚备份MySQL数据库并将其恢复到我们链接到SQL Server的单独数据库,并从那里处理数据。读取通常在一两分钟内完成。 SQL Server仍在锁定MySQL表,然后用户开始堆叠多个连接,直到与MySQL的所有连接都用完为止。

因此,由于我每天只需要用于报告目的的数据,这个单独的数据库副本有效,但我不知道对此有任何其他修复。

由于

KD