Mysql
什麼是最不安全的 MySQL 配置?
我有專門為 Jenkins 執行的 MySQL 5.5.27-29.0-log 實例。由於測試數據總是在設置過程中重新創建,ACID 是不必要的,我希望犧牲它來獲得更多性能。
該盒子有 32GB 的 RAM,但其中大部分用於執行測試。我大概可以再花 64M
innodb_buffer_pool_size
該盒子有 8 個核心,使用率為 24%,還有用於 MySQL 的 SSD 驅動器。
到目前為止,這是我對 my.cnf 的了解:
[mysqld] innodb_buffer_pool_size = 256M innodb_log_file_size = 256M innodb_log_buffer_size = 4M innodb_flush_log_at_trx_commit = 2 innodb_flush_method = O_DIRECT innodb_write_io_threads = 64 innodb_read_io_threads = 64 innodb_io_capacity = 4000 innodb_doublewrite = 'OFF' innodb_adaptive_flushing_method = keep_average
任何人都有其他想法我還可以關閉什麼來獲得性能?
乍一看,我會看過去
要正確判斷前兩個值,您應該執行以下查詢:
SELECT CONCAT(ROUND(KBS/POWER(1024, IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999), SUBSTR(' KMG',IF(PowerOf1024<0,0, IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables WHERE engine='InnoDB') A, (SELECT 2 PowerOf1024) B;
這將告訴您給定數據集的理想緩衝池大小(以 MB 為單位)。
innodb_buffer_pool_size
不應大於已安裝 RAM 的 75% 。至於日誌文件大小,我有兩個建議(選一個)
建議 1:設置
innodb_log_file_size
為 25%innodb_buffer_pool_size
建議 2:如果您想根據每小時的實際日誌文件寫入量來設置日誌文件大小,請參閱我的 2012 年 8 月 27 日的文章正確調整具有 48GB RAM 的伺服器上的 30GB InnoDB 表和我的 2011 年 2 月 16 日的文章如何安全地更改 MySQL innodb 變數“innodb_log_file_size”?
至於
innodb_log_buffer_size
,你應該把它最大化8M
。越大innodb_log_buffer_size
,事務的刷新就越少。結語
你原來的問題是
What's the most unsafe MySQL configuration?
。真正的答案是:一個沒有任何配置文件的 MySQL 實例!!!;-)