本文来自: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