请教 | MySQL解决的缓存污染的问题

最近在看了小林coding的MySQL解决缓存污染问题(https://mp.weixin.qq.com/s/AvxPwQYi78nyfsALgzYNDQ)的时候出现了一个疑问。MySQL为了解决缓存污染,防止批量数据读取或者全表扫描的时候加载大量数据页导致热点数据缓存被淘汰的问题。提高了数据页进入YOUNG区域的门槛。只有在OLd区域内的数据在一定时间后再次被访问的时候才会放入YOUNG区域。
那么我的疑问是,MySQL在加载数据页的时候,是先将所有的数据页都先放在OLD区域吗?还是说只有在加载大量数据的时候才会出现这种情况,少量数据的时候,会直接将数据页放入YOUNG区域。
我咨询了豆包和deepseek两个模型,给我的答案截然相反,图如下。

----------------------------------
下午翻了官方文档
文档中提到,当一个页读入缓冲区的时候,会先加入到old区的头部
默认情况下,查询读取到的数据会被立即放入young区域的头部,后面就说了缓存污染的情况
全部评论
感觉MySQL的驱逐策略有点像LRU-K和2Q,相比起2Q加了个1s的冷却时间。应该是先进入old区,冷却一秒再访问,就会进入young区吧
点赞 回复 分享
发布于 03-31 11:55 辽宁

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务