Mysql InnoDB内存介绍

x33g5p2x  于2021-03-14 发布在 Mysql  
字(0.7k)|赞(0)|评价(0)|浏览(413)

缓存池

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为脏页列表;


重做日志缓冲


额外的内存池

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

相关文章

微信公众号

最新文章

更多