详解 MySQL的FreeList机制

作者:赐我白日梦 时间:2024-01-28 13:56:44 

一、前言

MySQL启动后,BufferPool就会被初始化,在你没有执行任何查询操作之前,BufferPool中的缓存页都是一块块空的内存,未被使用过也没有任何数据保存在里面。

而且你也知道了通过缓冲页的描述信息可以直接且唯一的找到它所指向的缓存页。

那你有没有想过,我们从磁盘里面读取出来的 数据页 应该放到那个缓冲页中去呢?

这个问题就引出了Free List。

二、Free List

其实Free List是Buffer Pool中基于缓存页描述信息 组织起来的双向链表。换言之,Free List中的每一个结点都是缓存页对应的描述信息。并且通过描述信息可以找到指定的缓存页(缓存页)

详解 MySQL的FreeList机制

InnoDB设计Free List的初衷就是为了解决上面说的问题。

如果这个缓存页中没有存储任何数据,那么它对应的描述信息就会被维护进Free List中。这时当你想把从磁盘中读取出一个数据页放入缓存页中的话,就得先从Free List中找一个节点(Free List中的所有节点都会指向一个从未被使用过的缓存页),那接着就可以把你读取出来的这个数据页放入到该节点指向的缓存页中。

相应的:当数据页中被放入数据之后。它对应的描述信息块会被从Free List中移出。

三、如何判断数据页有没有在缓存中?

你会不会纳闷MySQL怎么知道刚读取出来的这个数据页有没有在缓存页中呢?

这个功能的实现依托于另一个数据结构:hash table

key = 表空间号+数据页号

value = 缓存页地址

如果存在于hash table中,那就说明该数据页已经存在于Buffer Pool中了,优先使用Buffer Pool中的缓存页。相信你肯定能想到为啥优先使用Buffer Pool中的缓存页吧!首先免去了磁盘的随机IO,其次缓存页中的数据可能是已经被修改了的脏数据。

来源:https://www.cnblogs.com/ZhuChangwu/p/13992493.html

标签:MySQL,FreeList,机制
0
投稿

猜你喜欢

  • Python任务自动化工具tox使用教程

    2022-08-28 12:33:58
  • IDEA使用JDBC安装配置jar包连接MySQL数据库

    2024-01-23 17:43:21
  • Linux中Oracle启动侦听报错TNS:permission denied的解决方法

    2024-01-14 02:44:17
  • 页面包含的处理

    2024-05-09 09:04:18
  • ASP中一个字符串处理类加强版

    2008-11-25 18:07:00
  • 使用 django orm 写 exists 条件过滤实例

    2022-01-20 02:42:48
  • 解决vscode中golang插件依赖安装失败问题

    2024-04-26 17:23:15
  • Mysql实战练习之简单图书管理系统

    2024-01-17 14:09:32
  • php自定义函数实现二维数组按指定key排序的方法

    2023-06-27 09:54:36
  • Oracle 10g 服务器端安装预备步骤(详细图文教程)

    2024-01-13 07:39:57
  • python OpenCV学习笔记直方图反向投影的实现

    2021-01-12 09:16:44
  • 基于Python实现五子棋-(人机对战)

    2022-07-04 06:23:48
  • python编辑用户登入界面的实现代码

    2022-02-07 20:24:08
  • 使用python实现希尔、计数、基数基础排序的代码

    2023-07-12 09:02:24
  • python 爬虫出现403禁止访问错误详解

    2023-11-13 06:53:24
  • PHPExcel冻结(锁定)表头的简单实现方法

    2023-08-18 02:35:21
  • python通过exifread模块获得图片exif信息的方法

    2023-08-18 05:00:15
  • 整理一个asp多级树型分类问题的解决方法

    2007-10-17 18:38:00
  • pyqt5 实现工具栏文字图片同时显示

    2023-08-12 17:46:58
  • BootStrap的select2既可以查询又可以输入的实现代码

    2024-04-28 10:18:41
  • asp之家 网络编程 m.aspxhome.com