mysql学习-4.lru链表中的冷热数据处理

1.导致lru链表中热数据区被挤到尾部节点的可能原因

由于mysql有预读的机制,会导致不是热数据的预读页会随着缓存页的读取会被放到lru链表的最头部

还有mysql有全量扫描表的可能,也会导致大量本来属于热数据的缓存页会被挤到lru链表的最尾部

预读机制中的值设置

-- innodb_read_ahead_threshold 默认值是56 ,如果顺序的访问一个区内的数据页超过这个数量,就会触发预读机制,将下一个相邻区中的所有数据页都会加载到缓存页中

-- innodb_random_read_ahead

默认值是off 如果buffer pool里缓存了一个区中的13个连续的数据页 那么这个区中的其他数据页也会被加载到缓存页中的

2.所以lru进行了优化,引入了冷热数据分离处理的机制

拆成两部分一部分是热数据区一部分是冷数据区

比例由参数控制 innodb_old_blocks_pct 默认是37 冷数据为37%

第一次加载进来的数据会被放在冷数据的头部

参数 innodb_old_blocks_time 默认值是1000 ,也就是说在1000毫秒之后再次访问这个值,那么这个值就会从冷数据区移到热数据区头部

3.热数据区优化

由于热数据经常被访问会导致热数据前部分数据的节点会经常移动,所以热数据区的前1/4被访问之后是不会发生节点移动的。只有在访问热数据区的后3/4才会将数据移到链表头部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值