IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Mysql 数据库InnoDB存储引擎中主要组件的刷新清理条件:脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log -> 正文阅读

[大数据]Mysql 数据库InnoDB存储引擎中主要组件的刷新清理条件:脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log

InnoDB存储引擎是Mysql数据库使用很广泛的一个存储引擎,底层的一些实现机制也值得我们去探究,它底层使用了很多的机制来保证数据的安全性与效率。本文所探究的主要是对脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log的刷新清理。

脏页

我们都知道我们执行更新操作,更改的是Buffer Pool中的页,该页再变为脏页,脏页刷新回磁盘是使用的CheckPoint技术,接下来就是脏页刷新回磁盘的一些触发条件:

  1. Master Thread 以秒为单位按一定条件刷新脏页(如果对IndoDB的Master Thread不了解的可以点击查看该文章,该文章详细介绍了Master Thread的执行流程)
  2. LRU 列表剩余空闲页不足100时,就移除LRU尾端的页,如果该页是脏页就会执行Check Point 刷新脏页
  3. Buffer Pool中脏页所占空间达到了Buffer Pool的总容量的75%也会刷新脏页
  4. Redo Log持久化文件中,未将脏页刷新回磁盘的Redo Log所占空间达到了总Redo Log持久化文件的75%

Redo Log

当我们执行更新语句后,会先生成Redo Log,再修改页,当数据库宕机后还有一些脏页未刷新会磁盘,就会造成数据的丢失,可以通过Redo Log来进行数据恢复,关于Redo Log 从内存中刷新至磁盘以及Redo Log持久化文件的清理工作:

  1. Master Thread 以秒为单位将内存中的Redo Log 刷新回磁盘文件中
  2. 事务提交,对应的Redo Log刷新回磁盘文件中
  3. Redo Log缓冲池中Redo Log所占空间超过总缓冲池中的空间的1/2回将Redo Log刷新回磁盘文件
  4. Redo Log持久化文件中不会有被重用的部分允许覆盖重用,当不可重用的部分所占空间超过了总文件空间的75%时,会刷新Buffer Pool中的脏页,进而让Redo Log持久化文件中有更多的可重用部分。

Undo Log

Undo Log 的作用是我们执行事务回滚时,恢复至原始数据。Master Thread线程会已秒为单位进行Undo Log的清理工作


Insert Buffer 或 Change Buffer

还是执行更新操作,更新了数据的同时还需要更新相对应的索引页,但这样更新操作的效率就会变的很慢,因为还需要从磁盘中读取相应的索引页到Buffer Pool中,很多时候还会读取很多索引页。针对该问题InnoDB存储引擎将更新索引页推辞了,并不是在更新数据的同时更新索引页,而是先暂时保存至Change Buffer 中,然后再根据一些情况进行merge(合并)操作。

进入Change Buffer的索引页也有一个条件:非唯一非聚集索引

对Insert Buffer 或 Change Buffer进行merge(合并)操作的情况:

  1. Master Thread 以秒为单位进行合并操作
  2. 当该非唯一非聚集索引再一次被使用时,也就是某条查询语句使用到了该索引,将该索引页从磁盘中读取出来至Buffer Pool中的时候
  3. Change Buffer底层结构就是一颗B+ Tree ,刚这颗B+ Tree可用空闲区域少于了总容量的1/32

还有一些其他我未总结到或有错误的期待欢迎大家留言指正。
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章           查看所有文章
加:2021-12-15 18:21:59  更:2021-12-15 18:24:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:43:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码