[TOC]
## 缓存池
InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。
缓存池简单来说就是一块内存区域。
通过参数innodb_buffer_pool_size配置缓存池: `show variables like 'innodb_buffer_pool_size'\G`
内存结构:

InnoDB 1.0.x开始允许多个缓存实例。
参数innodb_buffer_pool_instances来进行配置 默认唯1。

参数innodb_buffer_pool_instances可以设置大于1的值就可以得到多个缓冲池实例。
再通过命令`SHOW ENGINE INNODB STATUS\G;` 观察内容
mysql5.6开始:
`SELECT POOL_ID POOL_SIZE, FREE_BUFFERS,DATABASE_PAGES FROM INNODB_BUFFER_POOL_STATS\G`
查看缓冲状态。
*****
## LRU List、Free List 和 Flush List
缓存池默认页大小16kB,同样使用LRU算法进行缓冲池进行管理。


通过information_schema架构下的表观察unzip_LRU列表中的页:`SELECT TABLE_NAME,SPACE,PAGE_NUMBER,COMPRESSED_SIZE FROM INNODB_BUFFER_PAGE_LRU WHERE C
OMPRSSED_SIZE <> 0;`
Flush List为脏页列表;

*****
## 重做日志缓冲

*****
## 额外的内存池
在对一些数据结构本身的内存进行分配时,需要从额外的内存池中进行申请,当该区域的内存不够的时候,会从缓冲池进行申请。