2016-09-29 167 views
0

我試圖在這裏和通過Google找到答案,以瞭解如何控制鏈接服務器ODBC連接的連接。SQL Server鏈接服務器到MySQL「連接太多」

概述

我從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服務器。

ODBC設置是使用「mysql-connector-odbc-5.3.6-win64.msi」版本完成的。我沒有找到任何設置來限制連接數量。 ODBC確實顯示「允許多個語句」,但事實並非如此。它也有「啓用自動重新連接」,我無法想象爲什麼需要一個單一的查詢。

摘要

我不能從連接停止客戶,需要從執行導入時使用太多的連接禁用的過程。

對此的任何輸入將不勝感激。

感謝

KDS

更新:2016 OCT-05

AWS服務器 - M3.xlarge 4 CPU 15吉布 2 40吉布SSD硬盤

回答

0

這是更好地如果您無法阻止客戶連接,請優化MySQL服務器。

有了這麼多的信息,很難優化或爲MySQL優化建議一些東西。 https://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html

更好地更新您的配置文件。或者,如果您使用innoDB,則使用max_connections限制和InnoDB變量。和RAM也。

你能否在問題部分更新上述信息。

+0

我想從我的網絡的傢伙得到一些信息。我在SQL服務器上工作,而不是真正的MySQL。這是第一個試圖從中獲取數據的項目。 MySQL工作臺>管理>客戶端連接顯示「連接限制」:250.第三方公司一直在管理此服務器,儘管它位於內部。有建議是將數據庫複製到同一臺服務器上的另一個數據庫,然後連接到該數據庫。這似乎仍將使用來自服務器的連接。他們是服務器級還是數據庫級連接? – KDS

+0

它是服務器級別的連接,MySQL在模式級別上不起作用。每分鐘執行多少個查詢。另外檢查MySQL中的「顯示進程列表」 – khalid

+0

謝謝khalid 我正在努力獲得該訪問權限。如果我運行「show processlist」,我只能看到我的連接,而不看到其他人的連接。只要我有一些更好的訪問權限,我會立即更新問題。 還原諒我上面的語法錯字。 「他們的建議......」就是我的意思。 – KDS

0

我打算將此標記爲已回答,因爲它已經過了大約一年,並且沒有真正的解決方案。由於SQL Server鏈接服務器正在讀取數據,因此該問題鎖定在MySQL服務器上。像NOLOCK這樣的SQL Server參數對解決這個問題沒有影響。

因此,所做的是每晚備份MySQL數據庫並將其恢復到我們鏈接到SQL Server的單獨數據庫,並從那裏處理數據。閱讀通常在一兩分鐘內完成。 SQL Server仍在對MySQL表進行鎖定,然後用戶開始堆疊多個連接,直到與MySQL的所有連接都用完。

因此,由於我每天只需要用於報告目的的數據,此單獨的數據庫副本可以工作,但我不知道對此有任何其他修復。

感謝

KD