• mysql中的三大日志


    redoLog

    redoLog是InnoDB引擎特有的日志,每次操作的时候,都会先写入redoLog日志。其中记录的是,在某个时间,对哪些数据页中的哪些数据做了什么样的操作,修改了什么值。这个日志是偏物理性质的。
    只要这个日志写入之后,就不怕后续操作的时候发送异常的情况,因为这个日志可以继续之前的操作。
    并且,redoLog日志是在一块固定的空间中循环写入的,也就是说,当存储redoLog日志的地方不够的话,最新的日志会覆盖最早的日志。

    binLog

    binLog是server层的日志,每当有数据更新操作的时候,会写入这个日志。记录哪条数据id多少,修改了什么值,也就是说binLog日志是偏逻辑性质的, 直接记录某个数据的修改记录。
    binLog日志主要是用来做主从机制中数据同步和数据恢复用的,可以很快的通过binLog日志知道某一条数据当前最新的值应该是什么。Masert端将binLog发送给各个Slave端,从而达到主从数据一致的目的;而数据恢复是使用mysql的binLog工具来恢复数据。
    并且这个日志是追加写入,不会覆盖历史记录。

    undoLog

    undoLog是在每次修改的时候都会一条数据的最新版本,形成一个数据的版本链日志,当发生事务回滚操作的时候,可以直接通过这制定版本来恢复数据。
    并且在事务控制的时候是非常有用的,可以控制每个事务能看到的版本从而控制事务的隔离级别(只对读已提交和不可重复读有用)

    总结

    redoLog是InnoDB引擎的日志,并且是循环写入的,会覆盖历史的数据。记录的日志偏物理性质,是记录事务在innoDB所有操作的日志,包括记录有没有写入binLog,只有redoLog日志记录了commit事务提交,才算是操作完成。

    binLog日志是server层的日志,偏逻辑性质,记录每条数据做了什么修改,主要是用来做主从复制和数据恢复用的。

    undoLog日志是数据的版本链控制,结合MVCC来使用,每次修改数据会就会生成一条记录,查询的时候控制事务所能看到的版本。

  • 相关阅读:
    GO语言学习——基本数据类型字符串
    Java笔记(八)
    源码剖析:Elasticsearch 段合并调度及优化手段
    less基本用法
    [附源码]SSM计算机毕业设计高校教师教学助手系统的设计与实现JAVA
    vue2计算属性
    Redis中最简单的存储类型:String
    运动控制器PSO位置同步输出(三):高精度等间距二维三维PSO输出
    Bug分级处理指南:优先级与严重性的平衡
    [HFCTF2020]BabyUpload session解析引擎
  • 原文地址:https://blog.csdn.net/weixin_41011482/article/details/126220481