buffer pool
常识:
- Buffer Pool 是一片
连续
的内存空间,通过innodb_buffer_pool_size
在服务器运行过程中调整buffer pool大小,默认为128MB Free Page
(空闲页),此页未被使用,位于Free 链表
;Clean Page
(干净页),此页已被使用,但是页面未发生修改
,位于LRU 链表
。Dirty Page
(脏页),表示此页已被使用
且已经被修改
,其数据和磁盘上的数据已经不一致。- 当
脏页
上的数据写入磁盘后,内存数据和磁盘数据一致,那么该页就变成了干净页
。脏页同时存在于LRU链表和Flush链表。 提高读性能
: 读取数据的时候,先从buffer pool LRU链表(干净页)读取数据,如果没有从磁盘读取并把它相邻的数据页一并加载进来。提高写性能
: 更新数据的时候,不需要每次都要写入磁盘,而是将 Buffer Pool 对应的缓存页标记为脏页,然后再由后台线程将脏页写入到磁盘
2025年6月17日...大约 5 分钟