• 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来使用,每次修改数据会就会生成一条记录,查询的时候控制事务所能看到的版本。

  • 相关阅读:
    模拟器抓HTTP/S的包时如何绕过单向证书校验(XP框架)
    面试时,MySQL这些基础知识你回答的出来吗?
    哈工大李治军老师操作系统笔记【14】:进程同步与信号量(Learning OS Concepts By Coding Them !)
    SpringCloud--分布式锁实现
    【Java SE】继承
    Oracle查询固定时间间隔
    react: antd组件使用 FC Fragment
    win10查看并设置tomcat的jvm堆内存参数
    视频剪辑方法:一键批量调整色调的高效技巧
    构造 HTTP 请求
  • 原文地址:https://blog.csdn.net/weixin_41011482/article/details/126220481