首页 > 数据库 >MySQL的LRU

MySQL的LRU

时间:2023-10-03 15:45:18浏览次数:45  
标签:old young 链表 访问 区域 LRU MySQL

image

在 InnoDB 实现上,按照 5:3 的比例把整个 LRU 链表分成了 young 区域和 old 区域。

图中 LRU_old 指向的就是 old 区域的第一个位置,是整个链表的 5/8 处。靠近链表头部的 5/8 是 young 区域,靠近链表尾部的 3/8 是 old 区域。

改进后的 LRU 算法执行流程变成了下面这样。
图 7 中状态 1,要访问数据页 P3,由于 P3 在 young 区域,因此和优化前的 LRU 算法一样,将其移到链表头部,变成状态 2。
之后要访问一个新的不存在于当前链表的数据页,这时候依然是淘汰掉数据页 Pm,但是新插入的数据页 Px,是放在 LRU_old 处。
处于 old 区域的数据页,每次被访问的时候都要做下面这个判断:

  1. 若这个数据页在 LRU 链表中访问的时间间隔超过了 1 秒,就把它移动到链表头部;
  2. 如果这个数据页在 LRU 链表访问的时间间隔短于 1 秒,位置保持不变。

1 秒这个时间,是由参数 innodb_old_blocks_time 控制的。其默认值是 1000,单位毫秒。

标签:old,young,链表,访问,区域,LRU,MySQL
From: https://www.cnblogs.com/kiper/p/17741186.html

相关文章

  • java——mysql随笔——运维——日志
    黑马:https://www.bilibili.com/video/BV1Kr4y1i7ru?p=154&vd_source=79bbd5b76bfd74c2ef1501653cee29d6 csdn:https://blog.csdn.net/weixin_44904239/article/details/130379510 ================================================================================......
  • MySQL学习(2)什么是InnoDB数据页
    前言什么是InnoDB页MySQL服务器中负责读写数据的是存储引擎,InnoDB是一种常用的,将表数据存储在磁盘中的存储引擎。在实际操作中,MySQL将磁盘中的数据加载到内存中,若是需要处理写入或修改,则把内存中的数据刷新到磁盘。什么是行格式数据是以记录为单位在表中存储的,每一......
  • MySQL学习(1)MySQL程序有什么
    认识MySQLMySQL的客户端/服务器MySQL服务器是运行在计算机中,直接与要存储的数据打交道的程序,多个客户端程序可以连接到这个服务器程序,向服务器发送增删改查的请求,然后服务器程序根这些请求,对存储的数据进行相应的处理。MySQL社区版下载地址:https://dev.mysql.com/downloads/......
  • MySQL学习目录
    MySQL学习目录第一章-数据库基础知识第二章-MySQL语言基础第三章-数据定义第四章-数据更新第五章-查询数据第六章-数据视图第七章-索引第八章-数据库编程第九章-数据安全第十章-使用Python操作MySQL数据库......
  • 安装MySQL8.0.34出现的问题
    windows10安装MySQL8.0.34的时候,出现了在校验安装启动服务的时候失败,即Startingtheserver的时候出现红叉,在服务中手动启动MySQL80服务也失败,后来将登录用户设置为本地登陆才启动服务成功。虽然启动服务成功,但是在登录MySQL的时候却报出ERROR1045(28000),且密码显示是对的:ERRO......
  • 数据库-MySQL-02 下
    2.多表设计关于单表的操作(单表的设计、单表的增删改查)我们就已经学习完了。接下来我们就要来学习多表的操作,首先来学习多表的设计。项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种......
  • mysql在安装group_replication插件时,报错ERROR 1126"can't open share library xxxx g
    问题描述:mysql在安装group_replication插件时,报错ERROR1126"can'topensharelibraryxxxxgroup_replication.so",如下所示:数据库:MySQL8.0.27系统:rhel7.31、问题重现mysql>INSTALLPLUGINgroup_replicationSONAME'group_replication.so';ERROR1126(HY0......
  • 数据库-MySQL-03
    数据库开发-MySQL1.多表查询1.1概述1.1.1数据准备SQL脚本:#建议:创建新的数据库createdatabasedb04;usedb04;--部门表createtabletb_dept(idintunsignedprimarykeyauto_incrementcomment'主键ID',namevarchar(10)notnulluniquecomment......
  • 解决Mysql8+版本远程连接问题
    在安装的Mysql8+版本后远程连接不上注意:每次修改后,涉及到权限的一定要刷新权限。mysql>FLUSHPRIVILEGES;QueryOK,0rowsaffected(0.04sec)mysql>会报一个错误:1130-Host'10.45.12.79'isnotallowedtoconnecttothisMySQLserver一、查看Mysql是否开启可以远程访......
  • linux使用glibc版本安装mysql8.0.12
    1、前言使用yum安装虽然很方便,但是如果要是在没有公网的环境下,是没有办法使用yum源的。所以我们可以使用mysql提供的glibc版本的安装包,进行安装。但是在安装之前,一定要将以前的版本删除,包括/etc/my.cnf和/etc/my.cnf.d一类的文件全部删除,否则在启动的时候会导致混乱。从而报错。软......