推荐链接:
总结——》【Java】
总结——》【Mysql】
总结——》【Spring】
总结——》【SpringBoot】
参考链接:
mysql buffer pool 官网介绍
一、Buffer Pool
脏页:内存缓冲区里未同步到磁盘的数据
刷脏:Mysql有线程负责把内存缓冲区里的数据同步到磁盘
概念:内存缓冲区/缓冲池
如果同步到磁盘的间隔时长太长,可能会导致数据的丢失
二、Buffer Pool内存淘汰策略:LRU链表冷热分区
1、LRU链表结构
LRU链表被拆成2部分:热数据、冷数据
热数据:占比5/8
冷数据:占比3/8
2、数据页第一次加载进来 ,放在LRU链表的什么地方 ?
答案:放在 冷数据区域的头部
3、冷数据区域的缓存页,什么时候放进热数据区域?
Mysql设定了一个规则,在innode_old_blocks_time参数中,值默认为1000ms = 1s
只有把数据页加载进缓存里,1s之后再次对缓存页进行访问,才会将数据页放到热数据区域的头部
4、为什么是1s?
因为通过预读机制和全表扫描加载进来的数据页,通过是1s内就加载了很多,对他们进行访问都是1s内完成,他们会存放在冷数据区域等待刷盘清空,基本上不太会有机会放入到热数据区域,除非在1s后还有人访问,才会放入到热数据区域的头部。