用於託管 MySQL 資料庫的伺服器配置

用於託管 MySQL 資料庫的伺服器配置

我有一個 Web 應用程序,它使用託管在虛擬伺服器上的 MySQL 資料庫。當我啟動應用程式並且資料庫非常小時,我一直在使用這個伺服器。現在它已經成長,伺服器無法處理資料庫,導致頻繁的資料庫錯誤。我正計劃購買一台伺服器,我需要這方面的建議。
正如我所說,資料庫現在為 9 GB,並且增長速度相當快。有許多具有數百萬行的表,這些表經常被更新和查詢。資料庫顯示最常見的錯誤是Lock wait timeout exceeded.以前也曾經出現過「鎖定總數超過鎖定表大小」錯誤,但我可以透過增加 Innodb 緩衝池大小來避免它。
請建議我應該在購買的伺服器中尋找哪些配置。我在某處讀到,理想情況下資料庫的緩衝池大小應該大於其資料的大小,所以在我的情況下,我想我需要記憶體 > 9 GB。我還應該在伺服器中尋找哪些其他內容?

請告訴我是否應該提供您更多有關

答案1

您可以使用名為的 perl 腳本MySQL調優器獲得一些需要調整的變數的想法,從而在必要時升級硬體。
但是,您應該在修改設定之前了解它們,否則可能會導致問題惡化。

腳本本身包含一個非常有見地的提示:

*警告
對於您來說,完全理解對 MySQL 資料庫伺服器所做的每項變更非常重要。如果您不理解腳本輸出的部分內容,或不理解建議,您應該諮詢知識淵博的 DBA,甚至您信任的系統管理員。始終在臨時環境中測試您的更改,並始終記住某一領域的改進可能會對其他領域的 MySQL 產生負面影響。
*警告

您可以在 Percona 上找到有關該主題的精彩文章MySQL 效能部落格, A書單處理這個主題,甚至在他們的螢幕上播放佩科納電視網站。

答案2

您檢查過鎖定等待嗎?

您可以透過啟動 InnoDB 鎖定監視器來做到這一點:

建立表格 innodb_lock_monitor(a int) ENGINE=INNODB;

然後追蹤 MySQL 錯誤日誌。

若要停用監視器,請刪除表。

華泰

相關內容