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

  • 相关阅读:
    Js轮播图
    【数据库系列】如何查看MongoDB版本信息
    MySQL数据库——权限控制及日志管理
    安防设施搭建使用
    4 H3C网络设备模拟器
    主成分分析PCA并给出解释百分比
    Nature Microbiology | SeqCode:基于序列数据描述的原核生物命名规则
    马尔可夫链
    KingbaseES V8R6兼容Oracle的exp-imp导出导入工具使用
    好题分享
  • 原文地址:https://blog.csdn.net/weixin_41011482/article/details/126220481