上篇《缓冲池(buffer pool),彻底懂了!》介绍了InnoDB缓冲池的工作原理。
简单回顾一下:
(1)MySQL数据存储包含内存与磁盘两个部分;
(2)内存缓冲池(buffer pool)以页为单位,缓存最热的数据页(data page)与索引页(index page);
(3)InnoDB以变种LRU算法管理缓冲池,并能够解决“预读失效”与“缓冲池污染”的问题;
画外音:细节详见《缓冲池(buffer pool),彻底懂了!》。
毫无疑问,对于读请求,缓冲池能够减少磁盘IO,提升性能。问题来了,那写请求呢?
情况一
假如要修改页号为4的索引页,而这个页正好在缓冲池内。