首页 > 数据库 >MySQL为什么改进LRU算法

MySQL为什么改进LRU算法

时间:2023-09-13 14:00:48浏览次数:46  
标签:缓存 访问 算法 LRU MySQL 淘汰 数据

LRU算法概念介绍

LRU(Least Recently Used,最近最少使用)算法是一种用于缓存管理的常见算法。它的核心思想是:当需要淘汰(替换)一个数据时,选择最长时间未被访问的数据进行淘汰,即选择最近最少使用的数据。

以下是LRU算法的概念介绍和基本工作原理:

  1. 缓存管理: LRU算法通常用于管理缓存中的数据。缓存是一个用于临时存储数据的高速存储区域,旨在提高数据的访问速度。缓存大小有限,因此需要一种方法来确定哪些数据应该保留在缓存中,哪些应该被淘汰。
  2. 访问顺序跟踪: LRU算法维护一个数据结构,通常是一个双向链表或数组,用于跟踪数据的访问顺序。每当数据被访问时,它就被移到数据结构的前端,表示它是最近使用的数据。
  3. 淘汰策略: 当需要淘汰一个数据以腾出空间给新的数据时,LRU算法选择数据结构末尾的数据进行淘汰,因为它们是最久未被使用的数据。这样可以确保缓存中始终保留最近使用的数据。
  4. 例子: 假设有一个缓存,可以存储3个数据(A、B、C)。当访问数据A时,它会被移到缓存的最前面。接下来访问数据B,它也会被移到最前面。然后访问数据C,同样移到最前面。如果现在需要缓存一个新的数据D,但缓存已满,LRU算法会淘汰末尾的数据A,然后将D放入最前面。
  5. 时间复杂度: LRU算法的时间复杂度通常是O(1),因为它只需要对数据结构的头尾进行操作,而不需要遍历整个数据集。

需要注意的是,虽然LRU算法是一种简单而有效的缓存管理算法,但它也有一些缺点。例如,它不一定能够很好地适应某些访问模式,特别是在存在突发的热点数据访问时。在某些情况下,需要考虑其他缓存淘汰算法,如LFU(Least Frequently Used,最不经常使用)或ARC(Adaptive Replacement Cache,自适应替换缓存)。选择缓存算法应根据具体的应用场景和性能需求来决定。


MySQL为什么改进LRU算法?

MySQL为什么改进LRU算法_缓存

  • 如上图,按照传统的LRU算法的话,真正的热点数据将会被淘汰掉。

改进后的LRU算法

  • MySQL改进之后的LRU算法
  • 将链表分为了 new 和 old 两个部分,数据插入的时候从中间分隔点 midpoint 位置插入
  • 这样的话,如果数据很快被访问,数据将会向 Young 区域的头部移动,反之向 Old 区域的尾部移动
  • 这样避免了 “真正的热数据” 被淘汰

标签:缓存,访问,算法,LRU,MySQL,淘汰,数据
From: https://blog.51cto.com/u_16079703/7454976

相关文章

  • 完美解决MySQL ERROR:Access denied for user `root`@`localhost` (using password:YE
    windows找到mysql安装目录下的my.ini,并在最后一行添加skip-grant-tableslinux目录为etc/my.cnf在最后一行添加skip-grant-tables 1、输入mysql-uroot-p  然后回车2、输入usemysql; 3、输入updateusersetpassword=password("这里填写要设置的密码")whereuser=......
  • MySQL篇:bug1_navicat添加外键保存后不起作用(消失)
    问题在Nacicatpremium中添加外键一保存就消失用SQL语句也显示创建成功,没有报错,可是在INSERT中又起不到约束作用解决办法参考一下资料发现可能是表的类型不支持外键要在MySQL声明外键,用户应该紧记几个要点:两个表必须是InnoDB类型。在参考的表,必须有一个索引,参考的列被......
  • chatgpt能支持人工干预算法吗
    ​chatgpt是一种基于自然语言处理技术的聊天机器人模型,它可以通过输入自然语言文本来产生人类类似的回复。在ChatGPT的输出方面,一般情况下是不允许人工干预的,因为ChatGPT使用了生成式模型,其输出不是预先设定的模板式回答,而是根据对话上下文和模型的训练结果自动生成的自然语言文......
  • java数据结构与算法_____选择排序
    importjava.util.Arrays;/***@authorGod*选择排序(Selectionsort)是一种简单直观的排序算法。*它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,*存放在序列的起始位置,直到全部待排序的数据元素排完。*选择排序是不稳定的排序方法(比如序列[5,5,3......
  • MySql教程____mysql架构体系
    ......
  • MySql教程(--)MySql安装-基于yum源安装mysql
    一.下载mysql的yum源 1.地址可根据自己需求下载 http://repo.mysql.com/wgethttp://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm2.执行下载源 rpm-ivhmysql57-community-release-el7-8.noarch.rpm 3.安装yum-yinstallmysql-server 4.启动servicemysqld......
  • MySQL 分组取最新的一条
    1.MySQL分组取最新的一条2.MySQLnotinnotexists CREATETABLE`test_dept`(`deptid`int(11)NOTNULL,`deptname`varchar(255)CHARACTERSETutf8COLLATEutf8_general_ciDEFAULTNULL,PRIMARYKEY(`deptid`)USINGBTREE)ENGINE=InnoDBCHARACTERSET......
  • 【智能优化算法】基于大逃杀优化算法BRO求解单目标优化问题附matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • MySQL 8.0安装 Windows
    方案概述本方案提供winserver下mysql两种安装方式:图像化安装:MySQLInstallerMSIZIPArchive压缩包(命令行)方式实施步骤1.图像化安装:MySQLInstallerMSI官方下载地址:https://dev.mysql.com/downloads/这里建议选择:community版本通过离线方式安装,web-community版本需要链接网络下载......
  • MySql教程(--)mysql系统常用命令集
    --mysql连接1.连接到本机上的MYSQL 命令:mysql-u[username]-p mysql-uroot-p,回车后提示你输密码。2.连接到远程主机上的MYSQLhost:远程主机地址username:用户名password:密码 命令:mysql-h[host]-u[username]-p[password] mysql-h192.168.10.153-uroot......