rt

数据库事务开始之前,会将要修改的记录存放到UNdo日志里,当事务回滚时或数据库崩溃时,可以利用undo日志撤销未提交事务对数据库产生的影响。

逻辑日志,记录一个过程,提交后不会删除。delete insert

采用段的方式管理和记录。在innnodb数据文件中包含一种rollback segment回滚段,

内部包含1024个undo log segment。

show variables like "%innodb_undo%";

作用:

  • 实现事务原子性

  事务处理过程中,如果出现了错误或者用户执行了rollback语句,mysql可以利用undoLog 中的备份将数据恢复到事务开始前的状态。

  • 实现多版本并发控制MVCC

   事务未提交之前,undolog 保存了未提交之前的版本数据,undo log中的数据可作为数据旧版本快照供其他并发食物进行快照读。

事务A手动开启事务,执行更新操作,首先会把更新命中的数据备份到undo Buffer中。事务B手动开启事务,执行查询操作,会读取undi日志数据返回,进行快照读

redo log

事务中修改的任何数据,将最新的数据备份存储的位置,被称为重做日志

随着事务操作的执行,就会生成redo log,在事务提交时会将产生redo log写入log buffer,并不是随着事务的提交就立刻写入磁盘文件。等事务操作的脏页写入到磁盘之后,redolog的使命也就完成了,Redo log 占用的空间就可以重用(被覆盖写入)。

作用:为了实现事务的持久性。防止在发生故障的时间点,尚有脏页为写入表的IBD文件中,在重启MYSQL服务的时候,根据RedoLog进行重做,从而达到事务的未入磁盘数据进行持久化这一特性。

redoLog 是顺序写 同步?

其实不然,参考https://blog.csdn.net/m0_37264516/article/details/99480237

用的还是非同步的io。只保证刷到页告诉缓存,优势在于,顺序写,写之前的查 缓存命中率高

顺序循环写的方式写入文件,写满时则回溯到第一个文件,进行覆盖写。

Binlog

不是innodb独有,是mysql server自己的日志。

主从复制:在主库中开启,主库就可以把binlog传递给从库,从库拿到binlog后实现数据恢复达到主从数据一致性。

数据恢复:通过mysqlbinlog工具来恢复数据。

文件结构:

binlog和redlog区别

redolog 是属于innodb,binlog是属于mysql server自带功能。

redo log属于物理日志,记录该数据页更新状态内容,binlog是逻辑日志,记录更新过程

redo log日志是循环写,日志空间大小是固定。binlog是追加写入, 写完一个写下一个,不回覆盖使用。

redo log作为服务期异常宕机后事务数据自动恢复使用。binlog可以作为主从复制和数据恢复使用。binlog没有自动crash-safe功能

mysql undo+redo+binlog的更多相关文章

  1. MySql Undo Redo

    Undo LogUndo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC). - 事务的原子性(Atomicity) ...

  2. Mysql undo redo 总结

  3. MySQL中redo log、undo log、binlog关系以及区别

    MySQL中redo log.undo log.binlog关系以及区别 本文转载自:MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结 ...

  4. 数据库篇:mysql日志类型之 redo、undo、binlog

    前言 可以说mysql的多数特性都是围绕日志文件实现,而其中最重要的有以下三种 redo 日志 undo 日志 binlog 日志 关注公众号,一起交流:微信搜一搜: 潜行前行 1 redo日志 in ...

  5. 2 万字 + 30 张图 | 细聊 MySQL undo log、redo log、binlog 有什么用?

    作者:小林coding 计算机八股文网站:https://xiaolincoding.com/ 大家好,我是小林. 从这篇「执行一条 SQL 查询语句,期间发生了什么?」中,我们知道了一条查询语句经历 ...

  6. redo、undo、binlog的区别

    在MySQL中,redo.undo.binlog经常见,但很容易混淆这三者.   redo undo binlog 作用 保持事务的持久性 帮助事务回滚及MVCC的功能 进行Point-In-Time ...

  7. MySQL 中Redo与Binlog顺序一致性问题

    首先,我们知道在MySQL中,二进制日志是server层的,主要用来做主从复制和即时点恢复时使用的.而事务日志(redo log)是InnoDB存储引擎层的,用来保证事务安全的.现在我们来讨论一下My ...

  8. MySQL,MariaDB:Undo | Redo [转]

    本文是介绍MySQL数据库InnoDB存储引擎重做日志漫游 00 – Undo LogUndo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版 ...

  9. [转]MySQL日志——Undo | Redo

    本文是介绍MySQL数据库InnoDB存储引擎重做日志漫游 00 – Undo LogUndo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版 ...

随机推荐

  1. Luogu P4247 [清华集训2012]序列操作

    题意 给定一个长度为 \(n\) 的序列 \(a\) 和 \(q\) 次操作,每次操作形如以下三种: I a b c,表示将 \([a,b]\) 内的元素加 \(c\). R a b,表示将 \([a ...

  2. WrapperClass

    * 测试包装类的基本用法: * 包装类就是把基本属性也变成对象,方便有时候用: * 八种基本属性,其他类型类似于integer,除了int-integer和char-character:其他都是原样: ...

  3. Redis常用命令(3)——Hash

    HDEL 格式:HDEL key field [field ...] 作用:删除哈希表中的一个或多个域. 返回值:删除的域的个数. HEXISTS 格式:HEXISTS key field 作用:判断 ...

  4. Java学习的第三十九天

    1.例3.7 100~200之间全部素数 package bgio; public class cjava { public static void main(String[]args) { int ...

  5. Linux 系统编程 学习 总结

    背景 整理了Liunx 关于 进程间通信的 很常见的知识. 目录 与 说明 Linux 系统编程 学习:000-有关概念 介绍了有关的基础概念,为以后的学习打下基础. Linux 系统编程 学习:00 ...

  6. java开发就业信息管理系统

    本文实例为大家分享了java就业信息管理平台开发案例,供大家参考,具体内容如下 可查询公司信息,学生信息,班级信息,针对学生就业与否信息的统计,老师和管理员登录后的权限不同等就业信息管理平台想要实现的 ...

  7. 完全卸载node.js

    1.通过控制面板卸载node.js 2.删除安装所在文件夹下的nodejs文件夹[我的是 C:\Program Files\nodejs] 3.删除C:\Users\xxx(自己电脑的名字)下的.np ...

  8. php 获取抖音id

    <?php public function getid($dy_url){ $header=get_headers($dy_url); $str = "/^.*?(\d+).*/&qu ...

  9. File 方法

    File类说明 存储在变量,数组和对象中的数据是暂时的,当程序终止时他们就会丢失.为了能够永 久的保存程序中创建的数据,需要将他们存储到硬盘或光盘的文件中.这些文件可以移动,传送,亦可以被其他程序使用 ...

  10. 2. RDD(弹性分布式数据集Resilient Distributed dataset)

    *以下内容由<Spark快速大数据分析>整理所得. 读书笔记的第二部分是讲RDD.RDD 其实就是分布式的元素集合.在 Spark 中,对数据的所有操作不外乎创建RDD.转化已有RDD以及 ...