当前位置:网站首页>mysql中的三大日志

mysql中的三大日志

2022-08-10 22:32:00 木小同

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

原网站

版权声明
本文为[木小同]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_41011482/article/details/126220481