- 默认为128M,可以通过设置innodb_buffer_pool_size启动项,单位为字节,最小值为5MB,当设置小于5MB时,会变为5MB
- buffer pool为连续的内存空间,划分为若干个页面,页面默认的大小为16KB
- 管理buffer pool页面,会创建控制信息,信息包含表空间编号、页号、缓冲页在buffer pool中的地址、链表节点信息等
- buffer pool 对应的内存空间分为若干个控制块、碎片、若干个缓冲页
- 空间链表(free链表)管理,会把每一个缓冲页对应的控制块都会加入到free链表中,链表的节点包含头节点、尾节点指针以及节点数量信息,控制块包含free链表的pre和next指针,每个节点占用40个字节
- flush链表管理,flush链表跟free链表结构差不多
- LRU链表管理
- 多buffer pool实例管理,通过设置参数innodb_buffer_pool_instances来控制Buffer pool实例数
- 配置buffer pool注意事项,innodb_buffer_pool_size必须是innodb_buffer_pool_chunk_size*innodb_buffer_pool_instances的倍数
- 查看buffer pool状态的命令
Total large memory allocated:代表Buffer pool向操作系统申请的连续内在空间大小
Dictionary memory allocated:为数据字典信息分配的内存空间大小
Buffer pool size:代表方buffer pool可以容纳多少缓冲页
Free buffers:代表当前buffer pool 还有多少空闲缓冲页
Database pages:代表LRU链表中页的数量
old database pages:代表LRU链表old区域的节点数
Modified db pages:代表脏页数量
Pending reads:等待从磁盘加载到buffer pool中的页面数量
Pending writes LRU
Pending writes flush list
Pending writes single page
Pages made young
page made not young
youngs/s
non-youngs/s
Page read、created、written
Buffer pool hit rate
young-making rate
not(young-making rate)
LRU len:代表LRU链表中节点的数量
unzip_LRU
I/O sum:最近50秒读取磁盘页的总数
I/O cur:现在正在读取磁盘页数量
I/O uhnzip sum:最近50秒解压的页面总数
I/O unzip cur:现在正在解压的页面数量