2012-02-09 107 views
0

因此,我有一個集中的CMS,其中包含從單個數據庫運行的多個站點。最近我們偶爾會收到一個我們以前見過的max_user_connections錯誤(在一個非常慢的服務器上)。mysql max_user_connections以及innodb vs myisam

現在主機已經建議innodb的行鎖定而不是myisam的表鎖定可以解決這個問題。聽起來可能是這樣,但我會盡管增加聯繫將是一個更安全的賭注。

我已經對innodb和myisam做了一些閱讀,我不相信全文索引的損失會成爲一個問題,但是我不確定外鍵的問題。

所以我的問題是,與生產數據庫上運行,具有巨大的CMS和前端代碼的各種實例,是否有可能在轉換爲innodb的任何主要問題?特別是什麼類型的查詢將不再起作用?

+0

http://stackoverflow.com/questions/2006053/converting-myisam-to-innodb-beneficial-consequences http://stackoverflow.com/questions/20148/myisam-versus-innodb – vulkanino 2012-02-09 10:44:17

回答

1

兩點:

  • Increasing the connections - 雖然具有這樣的「停止這世界」方案,這不會解決你的問題。增加連接只會給你更多的並行連接,但具有這樣的問題通常意味着表中的操作頻繁發生,並且在單個操作之間一個或多個類似的請求在阻塞狀態中運行。所以,即使您大幅增加連接池,它也只是一個臨時解決方案。

  • InnoDB是一個完全不同的存儲引擎。所以你需要在不同的配置屬性和備份場景中投入一些時間。從查詢的角度來看,你可能有更多的選擇與innodb,而不是與myisam。 Afaik唯一不可能的是全文索引。請看這裏的優點和缺點的綜合列表:http://www.kavoir.com/2009/09/mysql-engines-innodb-vs-myisam-a-comparison-of-pros-and-cons.html。一個提示:獲取與不同的工具集進行恢復,故障保護和備份

替代方案:你可能比通過切換無論是行級鎖定機制或切換到解決鎖定問題沒有其他選擇完全不同的東西。

還有一個選項不能完全切換。您可以基於表配置存儲引擎。因此,如果您確定發生鎖定問題的表,您可能只需將此表遷移到其他存儲引擎。