12 | 为什么我的MySQL会“抖”一下?

第一种是“redo log 写满了,要 flush 脏页”,这种情况是 InnoDB 要尽量避免的。因为出现这种情况的时候,整个系统就不能再接受更新了,所有的更新都必须堵住。如果你从监控上看,这时候更新数会跌为 0。第二种是“内存不够用了,要先将脏页写到磁盘”,这种情况其实是常态。InnoDB 用缓冲池(buffer pool)管理内存,缓冲池中的内存页有三种状态:  第一种是,还没有使用的;  第二种是,使用了并且是干净页;  第三种是,使用了并且是脏页。

涉及两个参数:

io容量(默认是机械硬盘的值,如果是ssd要加大)

show variables ‘innodb_io_capacity‘;

刷脏页连坐(默认是机械硬盘的设置为1,如果是ssd,最后设置为0)

show variables like ‘innodb_flush_neighbors‘;

相关推荐