我试图在这里找到答案并通过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驱动器
答案 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