【MySQL】事务日志

  事务的隔离性由锁机制实现,事务的原子性、一致性和持久性由redo日志和undo日志实现。

一、redo日志

1.1、为什么需要redo日志

  一方面,由于数据从内存写回磁盘需要一定的时间,假如在事务提交后,还没有写回磁盘,数据库就宕机的话,那么这段数据就无法恢复了。
  另一方面,为了维持事务的持久性。对于一个已经提交的事务,即使提交后系统崩溃,也要保证这个事务对数据库中所做的更改也不能丢失。
  保证持久性的方法:

  • 在事务提交完成前把该事务所修改的所有页面都刷新到磁盘,虽然方法简单,但是修改量与刷新磁盘的工作量严重不成正比,仅仅为了修改一个字节的数据可能就要刷新一页的数据在磁盘上。并且由于页面可能并不相邻,使用到的随机IO刷新较慢

  • 另一种解决思路是把修改的东西记录一下。比如记录在第0号表的10号页面的偏移量为100处的值更新为2。
      redo日志就采用了WAL技术(Write-Ahead Logging),这种技术的思想是先写日志、再写磁盘,日志写入成功就算提交成功。当发生宕机时,就可以通过redo日志来恢复。

1.2、redo日志的好处

好处

  • 1、redo日志降低了磁盘刷新频率
  • 2、redo日志占用的空间非常小

特点

  • redo日志顺序写入磁盘
  • 事务执行过程中,redo日志不断记录。

1.3、redo组成

重做日志的缓冲
  在数据库服务器启动时向系统申请了一大片称为redo log buffer的连续空间。这片空间被划分为若干个redo log block
在这里插入图片描述

1.4、redo更新流程

在这里插入图片描述
1、将数据从磁盘读到内存中
2、生成redo日志并写入redo log buffer
3、当事务commit后,将redo log buffer中的内容刷新到redo log file中。
4、定期将内存中修改的数据刷新到磁盘中。

1.5、redo log刷盘策略

1.6、redo log file

日志文件组
在这里插入图片描述
  总共的redo日志文件大小为innode_log_file_size * innode_log_files_in_ group 。采用这种循环的方式向redo日志文件组中写入数据,会导致后写入的数据覆盖掉前面的数据。

check point
  这个日志文件组有两个重要的属性:

  • write pos是当前位置,一边写一边后移
  • checkpoint是当前要擦除的位置,也是后移。

  结构类似于循环队列:

在这里插入图片描述

二、undo日志

  redo日志保证了事务的持久性,undo日志保证了事务的原子性

2.1、undo日志的理解

  每当我们对一条记录进行改动时,都需要把回滚的东西记录下来。比如:

  • 对于每个INSERT,InnoDB引擎就会完成一个DELETE
  • 对于每个DELETE,InnoDB引擎就会完成一个INSERT
  • 对于每个UPDATE,InnoDB引擎就会完成一个相反的UPDATE

  这些为了回滚而记录的内容称为回滚日志(undo log)。此外,undo log也会产生redo log来保证持久性。

2.2、undo日志作用

  • 回滚数据
      undo日志只是将数据库逻辑的恢复,但是数据在物理磁盘上的存储可能不太一样。
  • MVCC
      多版本并发控制

2.3、undo存储结构

2.3.1、回滚段与undo页

回滚段InnoDBundo log的管理采用段的方式
undo页:每个回滚段记录了1024个undo log segment,在每个undo log segment中进行undo页的申请。
undo页的重用:如果为每个事务分配一个页(一页默认16K),且每秒处理1000个事务,那么每秒就需要16K*1000=16M的空间,运行时间长了就会导致磁盘空间的浪费。
  重用表示多个事务共用一页,如果事务提交后,则不会立即删除undo页,而是被挂到链表中,对其已使用空间进行判断。

  • 已使用空间大于等于3/4,回收
  • 已使用空间小于3/4,继续被重用。
2.3.2、回滚段与事务
  • 每个事务只会使用一个回滚段,一个回滚段在同一时刻可能会服务于多个事务
  • 在事务开始时,会制定一个回滚段,在事务进行中发生数据修改,原始数据会复制到回滚段。
  • 在回滚段中,事务会不断填充盘区,不够用时请求下一盘区,盘区用完覆盖初始盘区。
  • 回滚段存在于undo表空间,数据库中可以存在多个undo表空间,但同一时刻只能使用一个undo表空间。

补充:purge线程
作用:

  • 清理undo页
  • 对页里的数据行打标签从而进行假删除。

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

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

相关文章

web前端面试题---->HTML、CSS

一.居中方法 block元素如何居中 margin:0 auto;position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);flex布局: 对父元素操作 : justify-content:center; al…

商城小程序项目实现监控的可观测性最佳实践

前言 微信小程序是一种轻量级的应用程序,用户可以在微信内直接使用,无需下载安装。它具有独立的开发框架和生态系统,支持丰富的功能和交互,包括社交、购物、服务等。 观测云对微信小程序的监控能够实时收集性能指标、错误日志和…

分布式系统CAP理论

1、什么是CAP理论 C是Consistency(强一致性)、A是Availability(可用性)、P是Partition Tolerance(分区容错性),一个分布式系统不可能同时很好的满足—致性、可用性和分区容错性这三个需求,不能同时成立,最多只能同时满足其中的两项&#xff…

Linux系统运维命令:找出某个分区或者路径下 占用磁盘空间最多的文件和目录

目录 一、需求 二、解决方法 1、解决思路 2、组合命令 3、du命令 三、实例演示和命令解释 1、实例演示 (1)查看当前路径下文件和目录 (2)命令效果展示 2、命令解释 (1). du -cks (2…

小白学视觉 | 图像上的 OpenCV 算术运算

本文来源公众号“小白学视觉”,仅用于学术分享,侵权删,干货满满。 原文链接:图像上的 OpenCV 算术运算 1 OpenCV 简介 图像可以进行算术运算,例如加法、减法和按位运算(AND、OR、NOT、XOR)。…

电商系列之仓储发货

疫情3年,大多数人都将购买需求转移到了线上。同时由于暴涨的订单数量、还在恢复中的物流运输等因素,导致用户的收货时间缓慢甚至是发货时间、收货时间延后。那么笔者就从订单的仓库作业流程入手,分析了用户订单发货延后的原因。 受到最近疫情…

简历工具推荐

HR浏览一份简历也就25秒左右,如果你连「好简历」都没有,怎么能找到好工作呢? 以最简单的方式来写好简历,只需专注内容本身而无需关注排版。这样的效果才是我们想要的,这里推荐使用入职啦简历,这个工具最大的…

RuoYi-Vue-Plus(sa-token)

一、介绍 官网: Sa-Tokenhttps://sa-token.cc/index.html 特性: 登录与权限认证:支持用户登录和细粒度权限认证。会话管理:提供会话创建、维护和销毁功能。单点登录:支持单点登录,简化多应用登录流程。OAu…

聚类分析|基于层次的聚类方法及其Python实现

聚类分析|基于层次的聚类方法及其Python实现 0. 基于层次的聚类方法1. 簇间距离度量方法1.1 最小距离1.2 最大距离1.3 平均距离1.4 中心法1.5 离差平方和 2. 基于层次的聚类算法2.1 凝聚(Agglomerative)2.3 分裂(Divisive) 3. 基于…

GAMES Webinar 288-VR/AR专题-陆峰-混合现实中的多模态自然人机交互

感知交互增强智能 研究室虚拟现实技术与系统国家重点实验室,北京航空航天大学计算医学研究所,大数据精准医疗北京市高精尖创新中心 Perception & Hybrid Interaction (PHI) for Augmented & Affective Intelligence (A2I) We are working on v…

力扣56. 合并区间

Problem: 56. 合并区间 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.将数组按内部的一维数组的第一项按从小到大的顺序排序; 2.创建二维结果数组merged,并将排序后的数组中的第一个一维度数组存入到merged中; 3.从后面的一…

九泰智库 | 医械周刊- Vol.17

⚖️ 法规动态 器审中心公示新一期医疗器械优先审批申请审核结果 3月22日,依据原国家食品药品监督管理总局《医疗器械优先审批程序》(总局公告2016年168号),器审中心对申请优先审批的医疗器械注册申请进行了审核,对相关…

elasticsearch _cat/indices docs.count is different than <index>/_count

今天遇到一个问题,kibana中看到文档数与下面语句查询到的不同 GET /_cat/count/jiankunking_xxxxx_product_expand_test?v GET /jiankunking_xxxxx_product_expand_test/_search?track_total_hitstrue语句查询结果 epoch timestamp count 1711433785 06:16…

详解从ERP传到MES系统的数据

1、物料需求计划 MES系统提供的物料需求计划与传统BOM-MRP方式提供的物料需求计划有本质的不同。首先,满足产能约束、各种生产约束、优化生产调度、提高工作效率的要求。其次:它有详细的以分钟为单位的时间信息。将这些数据提供给ERP,可以大…

是德科技KEYSIGHT N9938A频谱分析仪

181/2461/8938产品概述: N9938A 是一款使用电池供电的便携式微波频谱分析仪;配置还包括全频段跟踪发生器和前置放大器、干扰分析仪、时间选通、VSWR 和反射测量、内置功率计。 N9938A FieldFox 手持式微波频谱分析仪 主要特性和功能 频率范围&#xff…

美团面试一面凉经

1.自我介绍 2.科研项目提问 没咋准备,说的有点没逻辑 3.问论坛项目 为什么用Redis实现登录?能不能用其他方式实现? 1、Redis 具备高性能 假如用户第一次访问 MySQL 中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将…

000_coolprop_in_matlab在Matlab中使用CoolProp

在Matlab中使用CoolProp 简介 CoolProp是一个开源的热力学性质库,可以计算多种流体的热力学性质。CoolProp支持多种编程语言,包括Python、C、Matlab等。本文将介绍如何在Matlab中使用CoolProp。 CoolProp官网 本文所使用的Matlab版本为R2021a。 在Ma…

C++基础--类和对象(上)--类与类成员及其成员函数

C基础--类和对象(上)--类与类成员及其成员函数 一、类的引入二、类的定义三、类的访问限定符及封装1、访问限定符2、封装 四、类的作用域五、类的实例化六、类的对象大小的计算七、类成员函数的 this 指针1、this指针的引出2、this指针的特性 八、总结 一…

Vit Transformer

一 VitTransformer 介绍 vit : An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale 论文是基于Attention Is All You Need,由于图像数据和词数据数据格式不一样,经典的transformer不能处理图像数据,在视觉领域的应…

4、事件修饰符、过滤器、自定义指令、生命周期

一、事件修饰符 按键别名enter 回车 delete 删除键 esc取消键 space 空格键 <script> export default {name: "KeyUp",methods:{keyUp(e){ console.log(e) }},skip(){window.location.href "http:www.xx.com"} } </script> <template>…