Linux

Linux 上的 MySQL 5.5 和 InnoDB 如何使用 RAM?

  • May 31, 2012

MySQL 5.5 InnoDB 是否將索引保存在記憶體和磁碟上的表中?它是否曾經對部分或整個表進行記憶體記憶體?還是它完全依賴於作業系統頁面記憶體(我猜是因為 Facebook 為 MySQL 建構的 SSD 記憶體是在作業系統級別完成的:https ://github.com/facebook/flashcache/ )?Linux 預設情況下是否將所有可用 RAM 用於頁面記憶體?因此,如果 RAM 大小超過表大小 + 程序使用的記憶體,那麼當 MySQL 伺服器啟動並第一次讀取整個表時,它將從磁碟中讀取,並且從那時起整個表都在 RAM 中?所以使用 Alchemy 數據庫(Redis 之上的 SQL,一切都在 RAM 中:http ://code.google.com/p/alchemydatabase/) 不應該比 MySQL 快多少,給定相同大小的 RAM 和數據庫?

閱讀 innodb_buffer_pool_size。

這就是你告訴 innodb 為記憶體保留多少 RAM 的方式。(不使用作業系統頁面記憶體)

MySQL 5.5 文件 - http://dev.mysql.com/doc/refman/5.5/en/innodb-parameters.html

一個不錯的部落格 - http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/

將 Flashcache 視為位於 HDD 前面的 L1 SSD 記憶體。

我無法談論 Redis 與 MySQL 的性能,但 MySQL 在處理語句、ACID 合規性等方面確實有其他性能成本……

如果您都在 RAM 中,那麼任何系統上的性能都將是“好”。

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