MySQL教程:缓冲池Buffer Pool的内存淘汰策略
  0SnbOly3LC5t 2023年11月14日 28 0


  • 缓冲池是为了降低磁盘IO
  • LRU内存淘汰策略 最久未被使用的数据页将被淘汰
  • 使用双向链表来维护Buffer Pool中数据页的顺序,最近被访问的数据页会被移动至链表头部
  • 最久未被使用的数据页会被下沉至链表尾部
  • MySQL会从链表尾部开始检查,淘汰的数据页会被标记为脏页,在需要写回磁盘时进行持久化操作

MySQL教程:缓冲池Buffer Pool的内存淘汰策略_数据库

  • 两部分,热数据和冷数据,冷数据占比3/8 热数据占比5/8
  • 新加入的数据页会被放在冷数据区域的头部
  • innodb_old_blocks_time参数,默认值1000毫秒
  • 为什么是1000毫秒?因为通过预读机制和全表扫描加载进来的数据页通常是1秒内就加载了很多,然后对它们访问一下,这些都是1秒内完成,它们会存放在冷数据区域等待刷盘清空,基本上不太会有机会放入到热数据区域,除非在1秒后还有人访问,存在后续还会有人访问的肯呢个,才会放入热数据区域的头部


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
0SnbOly3LC5t