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
查看缓冲状态。
缓存池默认页大小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为脏页列表;
在对一些数据结构本身的内存进行分配时,需要从额外的内存池中进行申请,当该区域的内存不够的时候,会从缓冲池进行申请。
内容来源于网络,如有侵权,请联系作者删除!