一、undo log、Buffer Pool、WAL、redo log

目录

  • 1、undo log
  • 2、Buffer Pool
  • 3、WAL
  • 4、redo log
  • 5、总结
  • 6、问题

1、undo log

  • undo log日志是一种用于撤销回退的逻辑日志,在事务未提交前会记录相反的操作到undo log,当事务回滚,使用undo log 进行回滚,保证了事务的原子性。
  • MVCC通过 undo log+ReadView实现,undo log为每条记录保存多份历史数据,Mysql根据ReadView里的信息顺着undo log记录的版本链找到相关记录。
    在这里插入图片描述

2、Buffer Pool

Buffer Pool是Innodb引擎将磁盘的数据页缓存到内存中的一片区域

  • 当读取数据时,如果数据在Buffer Pool中,直接读取,否则去磁盘读,然后缓存到Buffer Pool中
  • 当修改数据时,会直接修改在Buffer Pool中的数据,并将数据所在页设置为脏页,后台由另一个线程将脏页写入磁盘。
  • Buffer Pool中除了缓存数据页,还缓存了undo页,undo log日志首先写入undo页,undo页和数据页一样由redo log来记录,然后通过redo log落盘

3、WAL

  • 全称write-ahead-loggin,指的是MySQL的写不是先写磁盘,而是先写日志,后续在合适时间再写磁盘,buffer pool和redo log的设计就是WAL技术
    在这里插入图片描述

4、redo log

  • 由于buffer pool是存储在内存,所以会有丢失风险,因此需要对在buffer pool中修改的数据记录到redo log中,事务提交后,redo log日志落盘,保证了事务的持久性
  • redo log是物理日志,记录了对某个数据页做了什么修改,比如对A表的B数据页C偏移量的地方做了D更新。
  • 同样redo log也有自己的缓存区,即redo log buffer,写日志前先写buffer,后续在以下情况下落盘:
    1、MySQL正常关闭
    2、redo log buffer写入量大于其空间一半
    3、后台线程每隔一秒落盘
    4、事务提交时由innodb_flush_log_at_trx_commit参数控制:0时不落盘,1时落盘,2时写到操作系统文件缓存,后续由操作系统落盘。因此性能比较为0>2>1;安全性比较为1>2>0;

5、总结

  • undo log用做事务回滚,记录了事务更新前的数据,保证事务的原子性,同时也用于实现MVCC
  • redo log用做重做数据,记录了事务更新后的数据,保证事务的持久性。通过自己的redo log buffer来缓存日志并按一定规则进行落盘操作。
  • Buffer Pool用做缓存数据页,如果涉及数据更新,则直接对缓存数据数据页做更新,更新后的数据页称为脏页,脏页由后台线程落盘

6、问题

  1. 如果在事务执行过程中(未提交)宕机,MySQL如何处理?
    答:如果在事务执行过程中宕机,由于事务没有提交,buffer pool里的数据也未落盘,因此执行过程中的修改其实无效,MySQL无需处理
  2. 如果在事务提交后宕机,MySQL如何处理?
    答:事务提交时,Innodb 会将记录写到redo log buffer中。事务提交后,会根据innodb_flush_log_at_trx_commit参数决定是否落盘,即0:不落盘,1:落盘,2:写入文件缓存,由操作系统落盘。如果设置为0,则会发生数据丢失;如果设置为1,在落盘过程中宕机也会发生丢失;如果设置为2,机器宕机会丢失,MySQL挂了不会丢失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/52598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ TinyWebServer项目总结(8. 高性能服务器程序框架)

《Linux 高性能服务器编程》一书中,把这一章节作为全书的核心,同时作为后续章节的总览。这也意味着我们在经历了前置知识的学习后,正式进入了 Web 服务器项目的核心部分! 前置内容回顾: 1. C TinyWebServer项目总结&…

等保测评中的安全测试方法

等保测评,即信息安全等级保护测评,是我国网络安全领域的重要评估机制,用于验证网络系统或应用是否满足相应的安全保护等级要求。在等保测评中,安全测试方法扮演着至关重要的角色。本文将详细介绍等保测评中常用的安全测试方法及其…

LinkedHashMap和TreeMap的基本使用

一.LinkedHashMap集合:(是HashMap集合的儿子,Map集合的孙子) 1.特点: 2.代码实现: 1)键的唯一性: package com.itheima.a01myMap; ​ import java.util.LinkedHashMap; ​ public class A07_…

YOLOv8目标检测部署RK3588全过程,附代码pt->onnx->rknn,附【详细代码】

目录 一、训练yolov8模型,得到最佳权重文件best.pt 二、pt转onnx,即best.pt->best11.onnx 1、对下载的YOLOv8代码修改 2、加入模型导出功能, 3、导出指令采用如下代码 三、ONNX转RKNN 四、RK3588部署 1、拷贝rknn文件到rk3588板子内 2、执行…

48.x86游戏实战-封包抓取进图call

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

递归神经网络 (RNN) 简介

文章目录 一、介绍二、什么是递归神经网络 (RNN)?三、展开递归神经网络四、训练递归神经网络五、RNN 的类型六、现实生活中的 RNN 用例七、RNN 的两个主要限制八、RNN的变体8.1 双向递归神经网络 (BRNN)8.2 长短期记忆…

YOLOv8改进 | 融合改进 | C2f融合Faster-GELU模块提升检测速度【完整代码 + 主要代码解析】

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效…

基于信号量和环形队列的生产者消费者模型

文章目录 POSIX信号量信号量接口初始化信号量销毁信号量等待信号量发布信号量 基于环形队列的生产者消费者模型单生产单消费多生产多消费 POSIX信号量 POSIX信号量和SystemV信号量作用相同,都是用于同步操作,达到无冲突的访问共享资源目的。 但POSIX可以…

接口返回结果封装

接口返回结果封装 1、错误信息枚举 package com.zhw.enums;public enum AppHttpCodeEnum {// 成功SUCCESS(200,"操作成功"),// 登录NEED_LOGIN(401,"需要登录后操作"),NO_OPERATOR_AUTH(403,"无权限操作"),SYSTEM_ERROR(500,"出现错误&quo…

K-medoids算法原理及Python实践

一、原理 K-medoids算法是一种聚类算法,它的原理与K-Means算法相似,但关键区别在于它使用数据集中的实际点(称为medoids)作为簇的中心点,而不是像K-Means那样使用簇内所有点的平均值。以下是K-medoids算法的主要原理&…

Excel 保持原序时计算组内排名

Excel某表格第1列是分组,第2列是日期,未排序。 AB1Agent IDDate of Sale2Agent107-12-20233Agent105-12-20234Agent209-12-20235Agent313-12-20236Agent214-12-20237Agent222-12-20238Agent115-12-20239Agent117-12-202310Agent213-12-202311Agent120-1…

wooyu漏洞库YYDS!!!入门之道:重现乌云漏洞库

目录 wooyun乌云漏洞库搭建 1、搭建资料 文件结构分析: ​编辑2、搭建过程 2.1、搭建wooyun网站 2.2、配置数据库 2.2.1、修改数据库配置文件conn.php 2.2.2、创建wooyun数据库,并解压数据库文件 2.2.3、连接数据库(数据库默认连接密…

计算机基础知识总结(八股文--计算机网络、操作系统、数据库、c++、数据结构与算法)

一、操作系统 0.内存管理 01.什么是虚拟内存?为什么需要虚拟内存? 虚拟内存为程序提供比实际物理内存更大的内存空间,同时提高内存管理的灵活性和系统的多任务处理能力。虚拟地址空间就是进程所能看到的内存空间,这段空间是连续…

【案例61】update driver error

问题现象 顾问在保存数据源时报“update driver error”错误,重启服务器,重启sysConfig.bat后问题依旧。 问题分析 之前碰到这类问题发现是权限的问题。所以先去检查了相关文件夹的权限。 查看控制台发现客户用的是非Administrator用户登录&#xff0…

数学建模2024国赛时间及事项安排

2024年的全国大学生数学建模竞赛即将拉开帷幕。考虑到许多同学可能是首次参与此类赛事,尚不清楚如何进行有效的时间安排,博主在此整理了以往参赛的经验和时间管理策略,希望能为大家提供一些有益的参考,更从容地应对国赛。 本届全国…

网络安全 DVWA通关指南 DVWA File Upload(文件上传)

DVWA File Upload(文件上传) 文章目录 DVWA File Upload(文件上传)修复建议 LowMediumHighImpossible 修复建议 1、使用白名单限制可以上传的文件扩展名 2、注意0x00截断攻击(PHP更新到最新版本) 3、对上传…

出口MID电能表到欧洲市场

出口MID电能表到欧洲市场! 浙江永泰隆电子有限公司在研发和将MID能量计出口到欧盟市场方面具有丰富的经验。以下是突显该公司专业性的概述: 公司概况: 浙江永泰隆电子有限公司是一家专注于先进能量测量解决方案的制造商,特别是…

【栈】| 力扣高频题: 有效的括号

🎗️ 主页:小夜时雨 🎗️专栏:算法题 🎗️如何活着,是我找寻的方向 目录 1. 题目解析2. 代码 1. 题目解析 题目链接: 力扣20:https://leetcode.cn/problems/valid-parentheses/description/ 本…

linux系统中USB模块基本原理分析

大家好,今天主要给大家分享一下,USB设备的发展历程。 第一:USB发展变化 随着时代的发展,USB模块也随之不断的升级。 USB1.1:规范了USB低全速传输; USB2.0:规范了USB高速传输,采用NRZI(反向不归零)编码(NRZI采用8bit编码方式),位填充(在数据进行NRZI编码前…

虚幻5|制作玩家血量,体力(还未编辑,只用于引用)

未编写,仅引用 优化后: 把增加生命,减少生命,也可以用在体力里,更改如下 限制浮点,如果血量或体力按10来扣,如果你的血量降低到5,那么就会以5的数值来扣,而不会扣成-5…