Linux

MySQL 能否有效利用 64 GB RAM?

  • September 12, 2010

我們遇到了一個問題,查詢一個大約有 5000 萬行、索引大小為 4 GB(表大小約為 6 GB)的表會導致數據庫伺服器交換記憶體,並顯著降低速度。我很確定這與超出臨時表大小有關,並將其交換到磁碟。

如果我將我的數據庫伺服器從 32 GB RAM 升級到 64 GB RAM,我想知道 MySQL 數據庫是否能夠充分利用這個額外的記憶體而不是交換。我已經檢查了一些變數(例如 KEY_BUFFER_SIZE 等…),它們似乎支持設置超過 64 GB 的值。但是,MySQL 文件說 tmp_table_size 最大為 4 GB。

那麼記憶體升級值得嗎?“查詢大表”問題會因此受益,還是因為 4 GB 的限製而無濟於事?我知道還有其他潛在的解決方案,比如重組表以不同的方式進行分區等等……但是在不改變表的任何內容的情況下,額外的記憶體會有所幫助嗎?

此外,一般來說,當從 32 GB RAM 遷移到 64 GB RAM 時,是否還有其他與記憶體相關的變數 MySQL 無法利用?

我們使用 64 位 linux (Ubuntu) 作為我們的數據庫伺服器。

謝謝,蓋倫

如果您使用 InnoDB,要設置的最重要的變數是innodb_buffer_pool_size. 我會將其設置為系統記憶體的大約 80%。一旦你在使用後記憶體預熱,你最活躍的數據(工作數據集)將在記憶體中(innodb_buffer_pool_size),你對它的操作應該非常快。憑藉 64GB 的記憶體,您絕對可以在其中放很多東西。對於數據庫伺服器來說,記憶體總是一個不錯的選擇。

是的 - 如果您使用 InnoDB 並且有讀取密集型工作負載,您絕對可以利用大量 RAM

$$ assuming your data set will fit in mem - your server will be blazing-blazing fast $$. 我在 8-16 GB 伺服器上使用 MySQL 和 InnoDB 儲存,工作集適合記憶體。

引用自:https://serverfault.com/questions/170296