贝利信息

SQL Buffer Pool 的工作机制

日期:2026-01-21 00:00 / 作者:冷炫風刃
SQL Buffer Pool 是通过内存缓存数据页并异步刷盘来减少磁盘I/O的核心机制:命中则直接内存操作,未命中则从磁盘加载至Free链表;写操作先改内存页并记redo/undo,标记脏页入Flush链表;由LRU链表管理热度、Free链表分配空页、Flush链表驱动多时机异步刷脏。

SQL Buffer Pool 的工作机制,核心是用内存“挡”住磁盘,让读写操作尽量在内存中完成,再通过异步、延迟、分批的方式把变更落盘。它不是简单缓存,而是一套有状态、有链表、有策略的内存管理子系统。

Buffer Pool 怎么加载数据页

当 SQL 需要访问某行数据,InnoDB 会先查 Buffer Pool 是否已有对应的数据页(16KB):

Buffer Pool 怎么处理写操作

所有 DML(INSERT/UPDATE/DELETE)都先改内存页,不直写磁盘:

Buffer Pool 怎么管理缓存页生命周期

InnoDB 用三类链表协同管理页的状态与去留:

Buffer Pool 怎么刷脏页到磁盘

刷脏不是等事务结束才做,而是多时机、异步进行:

刷脏过程本身也受控:一次只刷一批页,避免瞬时 I/O 尖峰;支持 IO 能力自适应(如 innodb_io_capacity 参数)。