mysql的三种模式(详解 MySQL的FreeList机制)
mysql的三种模式
详解 MySQL的FreeList机制一、前言
MySQL启动后,BufferPool就会被初始化,在你没有执行任何查询操作之前,BufferPool中的缓存页都是一块块空的内存,未被使用过也没有任何数据保存在里面。
而且你也知道了通过缓冲页的描述信息可以直接且唯一的找到它所指向的缓存页。
那你有没有想过,我们从磁盘里面读取出来的 数据页 应该放到那个缓冲页中去呢?
这个问题就引出了Free List。
二、Free List
其实Free List是Buffer Pool中基于缓存页描述信息 组织起来的双向链表。换言之,Free List中的每一个结点都是缓存页对应的描述信息。并且通过描述信息可以找到指定的缓存页(缓存页)
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,其次缓存页中的数据可能是已经被修改了的脏数据。
以上就是详解 MySQL的FreeList机制的详细内容,更多关于MySQL FreeList机制的资料请关注开心学习网其它相关文章!
原文链接:https://www.cnblogs.com/ZhuChangwu/p/13992493.html
- 查询mysql 死锁(MySQL线上死锁分析实战)
- mysql首次登录不上怎么办(Mysql匿名登录无法创建数据库问题解决方案)
- mysql索引建立及应用(MYSQL创建索引,这些知识应该了解)
- mysql的三种模式(详解 MySQL的FreeList机制)
- mysql冷热数据分离方案(MySQL中使用流式查询避免数据OOM)
- mysql详细学习笔记(Mysql常用命令 详细整理版)
- mysql 查询语法常见问题(MySQL 异常有这一篇就够了!)
- docker运行redis并操作(Docker安装MySQL和Redis的方法步骤)
- mysql主键什么情况用uuid(Mysql主键UUID和自增主键的区别及优劣分析)
- mysqlupdate语句用法(MySQL update set 和 and的区别)
- mysql索引详解及基本用法(Mysql普通索引与唯一索引的选择详析)
- linuxmysql安装教程5.7.25学习(linux mysql5.5升级至mysql5.7的步骤与踩到的坑)
- mysql常用的sql语句大全(mysql建表常用的sql语句汇总)
- MySQL中ROUND四舍五入函数需要注意的地方
- mysql数据字段默认值怎么设置(MySQL 字段默认值该如何设置)
- mysql关联查询详解(详解mysql 组合查询)
- 节日我在岗|警景相融 平安相伴(节日我在岗警景相融)
- 战 疫 时刻 致敬每一位石化大学的 守护者(战疫时刻)
- 老弄堂里的市井味道(老弄堂里的市井味道)
- 小米音乐可绑定QQ音乐, QQ音乐 真的会消失在小米的设备上吗(小米音乐可绑定QQ音乐)
- 小米Watch S1评测 或许能成为小米冲击高端可穿戴设备的里程碑(小米WatchS1评测或许能成为小米冲击高端可穿戴设备的里程碑)
- 手机QQ与小米路由器在一起 明天揭晓,敬请期待(手机QQ与小米路由器在一起)
热门推荐
- 列举服务器网络防御措施(如何对Web服务器进行飓风级防御)
- 安装C# Windows服务需要“设置服务登录”
- jquery中hasClass()、is()判断是否包含指定的class
- dockerswarm网络架构(docker swarm外部验证负载均衡时不生效的解决方案)
- react新手指引页面编写(React+TypeScript进行项目构建案例讲解)
- vue前端打包发布教程(Vue项目打包、合并及压缩优化网页响应速度)
- mysqlbinlog怎么分析(MySQL中使用binlog时格式该如何选择)
- laravel后台管理(关于laravel后台模板laravel-admin select框的使用详解)
- JavaScript命名空间
- html5自定义字体图标(HTML5给汉字加拼音收起展开组件的实现代码)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9