標籤:mysql innodb 參數
innodb_read_io_threads=8
innodb_write_io_threads=8
此參數可以在linux平台上可以根據CPU核心數進一步更改來提高效能,讀操作比較多可以提高read_io_threads數量。可以通過show engine innodb status\G 在FILE I/O段查看到,如下:
FILE I/O
--------
I/O thread 0 state: waiting for completed aio requests (insert buffer thread)
I/O thread 1 state: waiting for completed aio requests (log thread)
I/O thread 2 state: waiting for completed aio requests (read thread)
I/O thread 3 state: waiting for completed aio requests (read thread)
I/O thread 4 state: waiting for completed aio requests (read thread)
I/O thread 5 state: waiting for completed aio requests (read thread)
I/O thread 6 state: waiting for completed aio requests (read thread)
I/O thread 7 state: waiting for completed aio requests (read thread)
I/O thread 8 state: waiting for completed aio requests (read thread)
I/O thread 9 state: waiting for completed aio requests (read thread)
I/O thread 10 state: waiting for completed aio requests (write thread)
I/O thread 11 state: waiting for completed aio requests (write thread)
I/O thread 12 state: waiting for completed aio requests (write thread)
I/O thread 13 state: waiting for completed aio requests (write thread)
I/O thread 14 state: waiting for completed aio requests (write thread)
I/O thread 15 state: waiting for completed aio requests (write thread)
I/O thread 16 state: waiting for completed aio requests (write thread)
I/O thread 17 state: waiting for completed aio requests (write thread)
提高IO處理能力:
innodb_io_capacity=200
該參數表示一次過將多少個髒資料寫進硬碟,普通單個SATA可以設定200,對於SSD可以設定3000,而擁有5個磁碟組成的RAID5可以設定成2000.
增加自適應重新整理髒頁功能:
innodb_adaptive_flushing
由於該參數預設為開啟狀態,所以不需要在my.cnf裡面設定。
mysql在以下三種情況下將髒頁刷磁碟:
當超過innodb_max_dirty_pages_pct設定值
重做日誌ib_logfile檔案寫滿
機器空閑時
關於innodb_max_dirty_pages_pct該參數建議在75-80之間即可,因為如果設定過大記憶體也很大或者伺服器壓力很大(資料庫崩潰時候恢復增加,可以提高效能),那麼效率很降低,如果設定的值過小,那麼硬碟的壓力會增加(崩潰恢復減少,不過效能降低)。
可以通過show engine innodb status\G 查看
Buffer pool size 65532
Buffer pool size, bytes 1073676288
Buffer pool size × 16 ×1024 等於Buffer pool size, bytes,(簡稱buffersize)然後將Modified db pages 的數乘16再乘1024(簡稱modiffiedsize), 將modiffiedsize / buffersize * 100 ,查出此數是否大於20%,然後通過減少該參數值來降低Modified db pages(這個是髒頁數量),動態設定:
set globalinnodb_max_dirty_pages_pct=5;
(不過個人認為會受到innodb_adaptive_flushing參數的影響)
innodb_buffer_pool_instance 參數可以增加buffer pool的數量,不過應該在innodb_buffer_pool_size大於1G時候才使用。在percona裡面innodb_buffer_pool_instances預設應該是8這個與社區裡的mysql有點不同。(建議根據CPU核心數2倍來調整)
innodb 的自適應hash索引,可以通過skip_innodb_adaptive_hash_index來進行關閉,不過如果單表大小小於記憶體大小的時候不建議關閉
利用TCMalloc提升記憶體配置效能
下載google-perftools 1.9編譯並安裝:
./configure --enable-frame-pointers
make && make install
修改/usr/local/mysql/bin/mysqld_safe檔案,在第13行增加下面一行:
export LD_PRELOAD=/usr/local/lib/libtcmalloc.so
重啟mysql
innodb_purge_threads 預設為1 ,獨立的清除線程
innodb_change_buffering用預設all即可
innodb_stats_on_metadata
Innodb更新中繼資料統計功能,建議關閉,其實不關閉也不會有太大影響。
innodb_stats_on_metadata=off
percona預設關閉。
innodb_strict_mode 嚴格檢查模式,此參數只是可以防止問題發生而已,不對效能有任何影響。
本文出自 “技術部落格” 部落格,請務必保留此出處http://raytech.blog.51cto.com/7602157/1701814
MySQL 5.6 innodb儲存引擎參數接受