本文來自:https://www.cnblogs.com/wangchaozhi/p/mysql_performance_stat.html
多核CPU,並支持64位應用,可以使用更多的內存。
配置MYSQL的IO線程與CPU核數一致。
通過以下命令查看當前配置的配置,默認4
#show variables like '%_io_threads';
innodb_read_io_threads 4
innodb_write_io_threads 4
只能通過修改配置文件來修改以上的配置
innodb_read_io_threads=16
配置后需要重啟MYSQL服務
選擇合適的內存
超過4G內存則需要CPU支持64位應用。
查看內存是否存在瓶頸:
#show global status like '%innodb%read%';
緩沖池命中率:
Innodb_buffer_pool_read_requests/(Innodb_buffer_pool_read_requests+Innodb_buffer_pool_reads+Innodb_buffer_pool_read_ahead)
如果大於99%則標識內存壓力不大。
選擇合適的磁盤
通過perf-tools-master/iosnoop查看磁盤的 延時
通過以下命令查看系統IOPS:
#fio -name iops -rw=randread -bs=4k -runtime=60 -iodepth 32 -filename /root -ioengine libaio -direct=1
機械硬盤:尋道時間、轉速影響“隨機寫入、讀取數據”性能,可以通過RAID提升性能。
固態硬盤:不需要尋到,因此讀取效率高,數據不可更改,需要擦除。
RAID0:多塊合並一塊,受限IO總線。
RAID1:兩組以上N個磁盤互為鏡像(可靠性最高)。
RAID5:硬盤分區技術,寫入較慢(校驗信息),讀取與RAID0接近。
innodb_io_capacity:參數定義了InnoDB后台任務每秒可用的I/O操作數(IOPS)
innodb_io_capacity 配置建議,它是innodb_io_capacity_max的一半,默認innodb_io_capacity=100。同樣,它對讀無效對寫有決定意義。
在頻繁寫操作的時候才有意義(它不適用於讀操作)。若你真的需要對它進行調整,最好的方法是要了解系統可以支持多大的 IOPS。譬如,假設服務器有一塊 SSD 硬盤,我們可以設置 innodb_io_capacity_max=6000
和 innodb_io_capacity=3000
(最大值的一半)。運行 sysbench 或者任何其他基准工具來對磁盤吞吐量來進行基准測試是一個好方法。
innodb_io_capacity 它會直接決定mysql的tps(吞吐性能),這邊給出參考: sata/sas硬盤這個值在200 sas raid10: 2000 ssd硬盤:8000