Mysql

什麼是最不安全的 MySQL 配置?

  • November 27, 2012

我有專門為 Jenkins 執行的 MySQL 5.5.27-29.0-log 實例。由於測試數據總是在設置過程中重新創建,ACID 是不必要的,我希望犧牲它來獲得更多性能。

該盒子有 32GB 的 RAM,但其中大部分用於執行測試。我大概可以再花 64Minnodb_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 實例!!!;-)

引用自:https://dba.stackexchange.com/questions/29387