当前位置: 首页 > news >正文

MySQL学习Day27——MySQL事务日志

事务的隔离性由锁机制实现,而事务的原子性、一致性和持久性由事务的redo日志和undo日志来保证。其中REDO LOG称为重做日志,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性,redo log是存储引擎层生成的日志,记录的是物理级别上的页修改操作,主要为了保证数据的可靠性;UNDO LOG称为回滚日志,回滚行记录到某个特定版本,用来保证事务的原子性和一致性,undo log是存储引擎层生成的日志,记录的是逻辑操作日志。

一、redo日志:

InnoDB存储引擎是以页为单位来管理存储空间的。在真正访问页面之前,需要把在磁盘上的页缓存到内存中的Buffer Pool之后才可以访问。所有的变更都必须先更新缓冲池中的数据,然后缓冲池中的脏页会以一定的频率被刷入磁盘(checkPoint机制),通过缓冲池来优化CPU和磁盘之间的鸿沟,这样就可以保证整体的性能不会下降太快。

1.为什么需要REDO日志:

一方面,缓冲池可以消除CPU和磁盘之间的鸿沟,checkpoint机制可以保证数据的最终落盘,然而由于checkpoint并不是每次变更的时候就触发的,而是master线程隔一段时间去处理的。所以最坏的情况就是事务提交后刚写完缓冲池时数据库服务器宕机,那么这段数据就是丢失的,无法恢复。另一方面,事务包含持久性的特性,对于一个已经提交的事务,在事务提交后即使系统发生了崩溃,这个事务对数据库中所做的更改也不能丢失。

InnoDB引擎的事务采用了WAL技术(Write-Ahead Logging),这种技术的思想就是先写日志,再写磁盘,只有日志写入成功,才算事务提交成功,这里的日志就是redo log。当发生宕机且数据未刷到磁盘的时候,可以通过redo log来恢复。

2.REDO日志的好处:

(1)redo日志降低了刷盘频率

(2)redo日志占用的空间非常小

3.REDO日志的特点:

(1)redo日志是顺序写入磁盘的:

在执行事务的过程中,每执行一条语句,就可能产生若干条redo日志,这些日志是按照产生的顺序写入磁盘的,也就是使用顺序IO,效率比随机IO快。

(2)事务的执行过程中,redo log不断记录:<

http://www.lryc.cn/news/313101.html

相关文章:

  • ETAS工具链ISOLAR-AB重要概念,RTE配置,ECU抽取
  • 蓝桥杯倒计时 43天 - 前缀和
  • 【Web - 框架 - Vue】随笔 - Vue的简单使用(01) - 快速上手
  • 【简说八股】Redisson的守护线程是怎么实现的
  • WPS/Office 好用的Word插件-查找替换
  • Go 简单设计和实现可扩展、高性能的泛型本地缓存
  • Vue.js 深度解析:模板编译原理与过程
  • Java多线程——如何保证原子性
  • stm32消息和邮箱使用
  • 银行数字化转型导师坚鹏:银行数字化转型案例研究
  • 142.乐理基础-音程的构唱练习
  • 【比较mybatis、lazy、sqltoy、mybatis-flex操作数据】操作批量新增、分页查询(二)
  • 每日OJ题_链表②_力扣24. 两两交换链表中的节点
  • C语言数据类型详解及相关题——各种奇奇怪怪的偏难怪
  • 经典语义分割(二)医学图像分割模型UNet
  • 三天学会阿里分布式事务框架Seata-seata事务日志mysql持久化配置
  • C语言-简单实现单片机中的malloc示例
  • 外包干了2年,技术退步明显
  • 计算机网络面经-HTTPS加密过程
  • 2024年最佳硬盘!为台式电脑、NAS等产品量身定做的顶级机械硬盘
  • 串的匹配算法——BF算法(朴素查找算法)
  • 数据处理分类、数据仓库产生原因
  • 【力扣100】 118.杨辉三角
  • 好物周刊#44:现代终端工具
  • 每日五道java面试题之springMVC篇(一)
  • 【GStreamer】basic-tutorial-4:媒体播放状态、跳转seek操作
  • IPSEC VPN 网关模式实验
  • 想在Vue中使用v-for来循环遍历一组对象,但只循环三次
  • Blazor系统教程(.net8)
  • Day15:技术架构、Maven、Spring Initializer、Spring全家桶、Spring IoC