iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Undo log日志详解
  • 474
分享到

Undo log日志详解

mysql数据库javaundolog 2023-08-21 22:08:08 474人浏览 八月长安
摘要

今天和大家分享一下Undo log日志的知识点 1.什么是undo log? 撤销日志,在数据库事务开始之前,Mysql会去记录更新前的数据到undo log文件中。如果事务回滚或者数据库崩溃时,可以利用undo log日志中记录的日志

今天和大家分享一下Undo log日志的知识点

1.什么是undo log?

撤销日志,在数据库事务开始之前,Mysql会去记录更新前的数据到undo log文件中。如果事务回滚或者数据库崩溃时,可以利用undo log日志中记录的日志信息进行回退。同时也可以提供多版本并发控制下的读(mvcC)。(具体的MVCC实现机制详解看这篇博客

2.undo log生命周期

undo log产生: 在事务开始之前生成
undo log销毁: 当事务提交之后,undo log并不能立马被删除,而是放入待清理的链表,由purge线程判断是否由其他事务在使用undo段中表的上一个事务之前的版本信息,决定是否可以清理undo log的日志空间。
注意: undo log也会生产redo log,undo log也要实现持久性保护。

3. uodo log日志的作用

首先简单说一下undolog 和redo log的区别
undo log是逻辑日志,实现事务的原子性
  undo log记录的是事务[开始前]的数据状态,记录的是更新之前的值
  undo log实现事务的原子性(提供回滚)
redo log是物理日志,实现事务的持久性
  redo log记录的是事务[完成后]的数据状态,记录的是更新之后的值
  redo log实现事务的持久性(保证数据的完整性)

1.undo log日志可以实现事务的回滚操作
我们在进行数据更新操作的时候,不仅会记录redo log,还会记录undo log,如果因为某些原因导致事务回滚,那么这个时候mysql就要执行回滚(rollback)操作,利用undo log将数据恢复到事务开始之前的状态。

如我们执行下面一条删除语句:

delete from book where id = 1;

那么此时undo log会生成一条与之相反的insert 语句【反向操作的语句】,在需要进行事务回滚的时候,直接执行该条sql,可以将数据完整还原到修改前的数据,从而达到事务回滚的目的。

再比如我们执行一条update语句:

update book set name = "三国" where id = 1;   ---修改之前name=西游记

此时undo log会记录一条相反的update语句,如下:

update book set name = "西游记" where id = 1;

如果这个修改出现异常,可以使用undo log日志来实现回滚操作,以保证事务的一致性。

2.undo log实现多版本并发控制 MVCC
具体的MVCC实现机制详解看这篇博客

4. uodo log的工作原理

在这里插入图片描述

如上图所示:
当事务A进行一个update操作,将id=1修改成id=2。首先会修改buffer pool中的缓存数据,同时会将旧数据备份到undo log buffer中,记录的是还原操作的sql语句。此时如果事务B要查询修改的数据,但是事务A还没有提交,那么事务B就会从undo log buffer中,查询到事务A修改之前的数据,也就是id=1。此时undo log buffer会将数据持久化到undo log日志中(落盘操作)。undo日志持久化之后,才会将数据真正写入磁盘中,也就是写入ibd的文件中。最后才会执行事务的提交。

5. uodo log的存储机制

在这里插入图片描述
具体参数存储形式如上图所示

6. uodo log的配置参数

innodb_max_undo_log_size: undo日志文件的最大值,默认1GB,初始化大小10M
innodb_undo_log_truncate: 标识是否开启自动收缩undo log表空间的操作
innodb_undo_tablespaces: 设置独立表空间的个数,默认为0,标识不开启独立表空间,undo日志保存在ibdata1中
innodb_undo_directory: undo日志存储的目录位置
innodb_undo_logs: 回滚的个数 默认128

来源地址:https://blog.csdn.net/LT11hka/article/details/125870981

您可能感兴趣的文档:

--结束END--

本文标题: Undo log日志详解

本文链接: https://www.lsjlt.com/news/377306.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Undo log日志详解
    今天和大家分享一下Undo log日志的知识点 1.什么是undo log? 撤销日志,在数据库事务开始之前,MYSQL会去记录更新前的数据到undo log文件中。如果事务回滚或者数据库崩溃时,可以利用undo log日志中记录的日志...
    99+
    2023-08-21
    mysql 数据库 java undo log
  • MySQL三大日志(binlog、redo log和undo log)详解
    1.redo log redo log是InnoDB存储引擎层的日志,又称重做日志文件。 用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来 redo log包括两部分:一...
    99+
    2023-09-11
    mysql 数据库
  • MySQL三大日志(binlog、redo log和undo log)图文详解
    目录1.redo logredo log概述刷盘时机innodb_flush_log_at_trx_commit=0innodb_flush_log_at_trx_commit=1innodb_flush_log_at_...
    99+
    2023-01-28
    mysql日志binlog MySQL日志类型 MySQL redo log
  • MySQL三大日志(binlog、redo log和undo log)图文详解
    目录1.redo logredo log概述刷盘时机innodb_flush_log_at_trx_commit=0innodb_flush_log_at_trx_commit=1i...
    99+
    2023-01-28
    mysql日志binlog MySQL日志类型 MySQL redo log
  • mysql日志文件之undo log和redo log
    目录前言1 undo1.1 undo是什么1.2 undo参数1.3 undo空间管理2 redo2.1 redo是什么2.2 redo 参数2.3 r...
    99+
    2024-04-02
  • MySQL事务日志(redo log和undo log)的详细分析
    目录前言1.redo log1.1 redo log和二进制日志的区别1.2 redo log的基本概念1.3 日志块(log block)1.4 log group和redo lo...
    99+
    2024-04-02
  • MySQL回滚日志(undo log)的作用和使用详解
    目录一、undo log的概念二、undo log的作用三、undo log的存储机制四、undo log的工作原理五、undo log的相关参数一、undo log的概念 undo...
    99+
    2024-04-02
  • 【Log日志】springboot项目中集成Log日志详解
    springboot项目中集成Log日志详解 一、Log日志介绍1.Log 日志组件主要作用及用途2.日志的级别Level级别控制 3.日志的输出Import3.1 快速使用3.2 日志文件输出3.3 自定义配置 4. ...
    99+
    2023-08-23
    spring boot java spring Log 日志
  • mysql日志文件undo log和redo log怎么设置
    本篇内容主要讲解“mysql日志文件undo log和redo log怎么设置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql日志文件undo log和re...
    99+
    2023-06-30
  • MySQL中的redo log和undo log日志有什么用
    这篇文章主要介绍“MySQL中的redo log和undo log日志有什么用”,在日常操作中,相信很多人在MySQL中的redo log和undo log日志有什么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-06-20
  • MySQLRedo与Undo日志详细解析
    目录1. Redo日志的介绍1.1 Redo日志的作用1.2 Redo日志的格式与类型2. 写入Redo日志的流程(MTR)3. Checkpoint机制4. Undo日志介绍5. ...
    99+
    2022-11-13
    MySQL Redo MySQL Undo日志
  • MySQL日志之redo log和undo log的知识点有哪些
    本篇内容介绍了“MySQL日志之redo log和undo log的知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小...
    99+
    2024-04-02
  • Python 日志(Log)
    日志? 日志,就是用来记录程序运行的时候都发生了什么事。 事件按严重程度划分level 事件内容: 时间 位置 事件的严重程度--level 内容 用logging模块实现 logging 模块 日志级别(level):DEB...
    99+
    2023-01-30
    日志 Python Log
  • 图文详解SpringBoot中Log日志的集成
    目录一、日志的分类1、名字分类2、日志分类3、日志级别二、logback简介1、 项目中日志分类2、 java项目中使用三、SpringBoot中日志使用 1、将Springboot...
    99+
    2024-04-02
  • 一文带你了解MySQL之undo日志
    目录 一、事务回滚的需求二、事务id2.1 给事务分配id的时机2.2 事务id是怎么生成的2.3 trx_id隐藏列 三、undo日志的格式3.1 INSERT操作对应的undo日志3.2 DELETE操作对应的undo日志3...
    99+
    2023-08-20
    mysql 数据库 数据库开发 数据库架构 大数据
  • 附加日志(supplemental log)
    附加日志(supplemental log)可以指示数据库在日志中添加额外信息到日志流中,以支持基于日志的工具,如逻辑standby、streams、GoldenGate、LogMiner。可以在数据库和表上设置。1.数据库级设置,分两类:...
    99+
    2023-06-06
  • nginx(二)---Nginx 日志Log
    日志配置日志轮转/切割日志分析 1.日志配置         1.1日志模块 官方文档    http://nginx.org/en/docs/http/ngx_http_log_module.html 日志模块的名称       ...
    99+
    2023-09-02
    nginx 运维 服务器
  • 如何配置Log日志
    这篇文章主要讲解了“如何配置Log日志”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何配置Log日志”吧!1.Slf4jSlf4j 的全称是 Simple...
    99+
    2024-04-02
  • mysql .log是什么日志
    mysql .log是指二进制日志文件,它是MySQL数据库引擎记录所有数据库更改操作的日志文件,其作用有:1、数据恢复,可以将数据库还原到特定时间点之前的状态,从而实现数据恢复;2、主从复制,主服务器将生成并写入二进制日志文件,然后从服务...
    99+
    2023-07-25
  • linux怎么查看log日志
    linux查看log日志的方法:1、打开终端;2、输入“tail -100f test.log”命令实时查看或者“cat -n test.log |grep "debug"”命令根据指定关键字查看日志即可。具体操作步骤:...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作