MySQL 引擎特性 InnoDB 文件系统之IO系统和内存管理(5)

当无法从LRU上获得一个可替换的Page时,说明当前Buffer pool可能存在大量脏页,这时候会触发single page flush(buf_flush_single_page_from_LRU),即用户线程主动去刷一个脏页并替换掉。这是个慢操作,尤其是如果并发很高的时候,可能观察到系统的性能急剧下降。在RDS MySQL中,我们开启了一个后台线程, 能够自动根据当前Free List的长度来主动做flush,避免用户线程陷入其中。

除了single page flush外,在MySQL 5.7版本里还引入了多个page cleaner线程,根据一定的启发式算法,可以定期且高效的的做page flush操作。

本文对此不展开讨论,感兴趣的可以阅读我之前的月报:

MySQL · 性能优化· 5.7.6 InnoDB page flush 优化

MySQL · 性能优化· InnoDB buffer pool flush策略漫谈

MySQL InnoDB表--BTree基本数据结构

在MySQL的InnoDB存储引擎中count(*)函数的优化

MySQL InnoDB存储引擎锁机制实验

InnoDB存储引擎的启动、关闭与恢复

MySQL InnoDB独立表空间的配置

MySQL Server 层和 InnoDB 引擎层 体系结构图

InnoDB 死锁案例解析

MySQL Innodb独立表空间的配置

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3fb67498486ae9aef44188984b3bf568.html