mysql innodb 性能優化

InnoDB 給 MySQL 提供了具有提交,回滾和崩潰恢復能力的事務安全(ACID 兼容)存 儲引擎。InnoDB 鎖定在行級並且也在 SELECT 語句提供一個 Oracle 風格一致的非鎖定讀。這些特色增加了多用戶部署和性能。沒有在 InnoDB 中擴大鎖定的需要,因爲在 InnoDB 中行級鎖定適合非常小的空間。InnoDB 也支持 FOREIGN KEY 強制。在 SQL 查詢中,你可以自由地將 InnoDB 類型的表與其它 MySQL 的表的類型混合起來,甚至在同一個查詢中也可以混合。

Mysql 的配置

innodb_buffer_pool_size   #重要,緩衝池的大小 推薦總內存量的 75%,越大越好。

innodb_buffer_pool_instances   #該參數可以控制緩衝池的個數,默認只有一個緩衝池,如果一個緩衝池中併發量過大,容易阻塞,此時可以分爲多個緩衝池;

innodb_log_buffer_size #innodb log 緩衝大小,由緩衝區刷新到磁盤,由於日誌最長每秒鐘就會刷新所以一般不用太大

innodb_flush_log_at_trx_commit #關鍵,數據庫多長時間把數據刷新到磁盤,默認值爲 1,可取 0,1,2 三個值,0 表示每一秒鐘把變更刷新到磁盤,1 表示每一次提交會把變更刷新到磁盤,2 表示每一次提交刷新到緩衝區然後每一秒從緩衝區刷新到磁盤,建議設置爲 2,如果數據安全性要求較高則使用默認值 1

innodb_read_io_threads #Innodb 讀 IO 進程數,默認爲 4

innodb_write_io_threads #Innodb 寫 IO 進程數,默認爲 4

innodb_file_per_table #on 表示每個表使用獨立的表空間,默認爲 off, 也就是所有的表都會建立在共享表空間上,設爲 on 可提高併發效率

innodb_stats_on_metadata # 決定 Mysql 在什麼情況下會刷新 innodb 表的統計信息,一般關掉

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/L0CDpnAawgDhZGEwd1YgZg