mysql io write


原文链接: mysql io write

Cpu的Iowait time过高 - 十月鱼的博客(本博客不再更新,作者迁移至:http://wiki.51centos.com) - CSDN博客

使用iotop发现这个进程 jdb2/sdb1-8 使用率高达40%到90%。

2.修改mysql参数
(1)第一步
修改sync_binlog=1为sync_binlog=10
因为sync_binlog=1导致事务写入太频繁,改为10后Iowait time明显下降。

可能还有个参数innodb_flush_log_at_trx_commit也会影响io性能,我设置的这个值是2,所以就没有修改

以下摘自网络:

sync_binlog”:这个参数是对于MySQL系统来说是至关重要的,他不仅影响到Binlog对MySQL所带来的性能损耗,而且还影响到MySQL中数据的完整性。对于“sync_binlog”参数的各种设置的说明如下:

sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。

sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

在MySQL中系统默认的设置是sync_binlog=0,也就是不做任何强制性的磁盘刷新指令,这时候的性能是最好的,但是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。而当设置为“1”的时候,是最安全但是性能损耗最大的设置。因为当设置为1的时候,即使系统Crash,也最多丢失binlog_cache中未完成的一个事务,对实际数据没有任何实质性影响。

从以往经验和相关测试来看,对于高并发事务的系统来说,“sync_binlog”设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多。

这里的解决方法转自:
http://www.cnblogs.com/z-books/p/7324949.html

(2)第二步
这一步要根据自己服务器的情况修改,多核cpu可以通过这两个参数更有效的利用cpu性能

innodb_write_io_threads = 32
#脏页写的线程数,加大该参数可以提升写入性能.mysql5.5以上才有。
innodb_read_io_threads = 16

#读取

作者:十月鱼
来源:CSDN
原文:https://blog.csdn.net/qq_32642039/article/details/78995617
版权声明:本文为博主原创文章,转载请附上博文链接!

`