Mysql

僅使用 InnoDB(5gb 數據庫)的 8gb RAM 專用 MySQL 伺服器的最佳 MySQL 記憶體設置

  • February 14, 2020

在設置 MySQL 以提高性能時,我是一個相當大的菜鳥。老實說,我並不擔心微調以從 MySQL 中榨取最後一點性能,但我確實知道,提供一些最佳結果的最重要的事情是正確設置記憶體/緩衝區。

我試圖通過僅使用 InnoDB 作為儲存引擎來保持簡單。而且我確實有一個專門的 MySQL 伺服器。它有 8gb 的 RAM,我應該如何分配它以最大限度地提高性能?我希望能夠將我的整個數據庫放入記憶體以獲得最佳性能。數據庫大約5GB。這可能嗎?

我應該為查詢記憶體分配多少記憶體?InnoDB 緩衝池多少錢?電腦的其餘部分(即非 MySQL 相關程序)多少錢?等等。

由於我沒有使用 MyISAM,我真的不需要在密鑰記憶體中放入大量記憶體,對嗎?

如果不了解數據庫本身,這很難。您應該注意一些工具;

關於將整個數據庫儲存在記憶體中;任何對數據庫進行更改的查詢都將保持打開狀態,直到在磁碟上執行寫入操作。唯一可以避免磁碟成為瓶頸的是具有寫入記憶體的磁碟控制器。

我將從預設值的以下更改開始:

key_buffer_size = 128M
thread_stack = 128K
thread_cache_size = 8
table_cache = 8192
max_heap_table_size = 256M
query_cache_limit = 4M
query_cache_size = 512M

innodb_buffer_pool_size = 4G 

# This is crucial to avoid checkpointing all the time:
innodb_log_file_size = 512M

# If you have control on who consumes the DB, and you don't use hostnames when you've set up permissions - this can help as well.
skip_name_resolve

然後我會看看事情進展如何,並根據(除其他外)上述工具的輸出嘗試不同的事情。我還會確保使用諸如MuninCacti之類的監控工具繪製趨勢圖,以查看我實際處理的工作負載類型。就個人而言,我對 Munin 提供的 MySQL 外掛有很好的經驗。

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