MySQL为什么改进LRU算法?

普通LRU算法

LRU = Least Recently Used(最近最少使用): 就是末尾淘汰法,新数据从链表头部加入,释放空间时从末尾淘汰.

image.png

  1. 当要访问某个页时,如果不在Buffer Pool,需要把该页加载到缓冲池,并且把该缓冲页对应的控制块作为节点添加到LRU链表的头部。
  2. 当要访问某个页时,如果在Buffer Pool中,则直接把该页对应的控制块移动到LRU链表的头部
  3. 当需要释放空间时,从最末尾淘汰

普通LRU链表的优缺点

优点

  • 所有最近使用的数据都在链表表头,最近未使用的数据都在链表表尾,保证热数据能最快被获取到。

缺点

  • 如果发生全表扫描(比如:没有建立合适的索引 or 查询时使用select * 等),则有很大可能将真正的热数据淘汰掉.
  • 由于MySQL中存在预读机制,很多预读的页都会被放到LRU链表的表头。如果这些预读的页都没有用到的话,这样,会导致很多尾部的缓冲页很快就会被淘汰。

image.png

改进型LRU算法

改进型LRU:将链表分为new和old两个部分,加入元素时并不是从表头插入,

相关推荐

  1. <span style='color:red;'>LRU</span><span style='color:red;'>算法</span>

    LRU算法

    2024-02-21 06:48:01      40 阅读
  2. 缓存淘汰(LRU算法

    2024-02-21 06:48:01       12 阅读
  3. <span style='color:red;'>LFU</span><span style='color:red;'>算法</span>

    LFU算法

    2024-02-21 06:48:01      32 阅读
  4. 面试算法-102-LRU 缓存

    2024-02-21 06:48:01       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-21 06:48:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-21 06:48:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-21 06:48:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-21 06:48:01       20 阅读

热门阅读

  1. SQL-2

    SQL-2

    2024-02-21 06:48:01      33 阅读
  2. 电商数据API接口

    2024-02-21 06:48:01       37 阅读
  3. 士兰微六轴陀螺仪SC7I22在AR/VR头显设备中的应用

    2024-02-21 06:48:01       25 阅读
  4. jupyter/scipy-notebook:python3.8 docker 镜像

    2024-02-21 06:48:01       29 阅读
  5. 云计算计算资源池与存储池访问逻辑

    2024-02-21 06:48:01       27 阅读
  6. pytorch和tensorflow比较以及安装使用tensorflow

    2024-02-21 06:48:01       31 阅读
  7. axios封装终极版实现token无感刷新及全局loading

    2024-02-21 06:48:01       19 阅读
  8. 深度学习之pytorch 中 torch.nn介绍

    2024-02-21 06:48:01       25 阅读
  9. [云原生] 初识Kubernetes

    2024-02-21 06:48:01       26 阅读
  10. golang 如何防止内存逃逸

    2024-02-21 06:48:01       26 阅读
  11. spark为什么比mapreduce快?

    2024-02-21 06:48:01       26 阅读