MySQL++:binlog edolog ndolog区别

binlog       :二进制日志是mysql-server层的,主要是做主从复制,时间点恢复使用。

redo log   :重做日志是InnoDB存储引擎层的,用来保证事务安全。

undo log  : 回滚日志保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读。redo log。

redo log在事务没有提交前,每一个修改操作都会记录变更后的数据,保存的是物理日志->数据。


 

binlog 是一个二进制格式的文件,用于记录用户对数据库更新的SQL语句信息,但对库表等内容的查询不会记录由于是二进制文件,

需使用mysqlbinlog解析查看主要作用:

用于数据库的主从复制及数据的增量恢复ROW (行模式) :

记录哪条数据修改了记录的是修改的那条记录的全部数据,即使只更新了-个字段, binlog 里也会记录所有字段的数据Statement (语句模式) :

每一条会修改数据的sq都会记录在binlog中作用:用于复制,在主从复制中,从库利用主库上的binlog进行重播,实现主从同步。


undo log有两个作用:

  提供回滚和多个行版本控制(MVCC)。

  在数据修改的时候,不仅记录了redo,还记录了相对应的undo,如果因为某些原因导致事务失败或回滚了,可以借助该undo进行回滚。

  undo log是采用段(segment)的方式来记录的,每个undo操作在记录的时候占用一个undo log segment。

作用:保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读


redo log作用:

  确保事务的持久性。

  防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性。

内容:物理格式的日志,记录的是物理数据页面的修改的信息,其redo log是顺序写入redo log file的物理文件中去的。

 

 

posted @ 2022-03-21 22:31  coding++  阅读(38)  评论(0编辑  收藏  举报