MySql的二进制日志,重做日志笔记,UndoLog

简单总结一下二进制日志和重做日志的区别

二进制日志(bin log):是mysql数据库级别的文件,不会记录select和show语句,主要用于恢复数据库和集群,配置参数为sync_binlog=N(表示每写缓冲多少次就同步一次磁盘),1表示同步方式写磁盘(写一次缓存即同步一次磁盘),默认为0,事务提交时会写磁盘(仅在事务提交前写磁盘)。有STATEMENT ROW MIXED三种格式。

重做日志(redo log):Innodb级别,用来记录Innodb存储引擎的事务日志,记录是物理页的变化,主线程每1s同步一次磁盘,用于数据恢复,保证事务的可靠性。

       innodb_flush_log_at_trx_commit用来控日志刷新到磁盘的策略,默认为1,表示事务提交时必须调用一次fsync操作。设置为0表示事务提交时不进行写入重做日志操作,写入操作在master线程中完成(1s写一次),2表示事务提交时写入重做日志文件,但不调用fsync

注:重做日志写入时,先写入系统文件缓冲,为确保即时写入磁盘,需要调用fsync函数,同步到磁盘。

UndoLog:用来保证事务的一致性,对应于读已提交和可重复读级别下的MVCC,多版本Undo页,逻辑日志,也可用于事务回滚,存放在数据库内部的段中,称为undo段,位于共享表空间。

锁-->隔离性

redo log -->原型性 持久性

undo log -->一致性

Innodb与myisam的区别:

1 缓存机制

2 事务支持

3 锁定实现

4 数据存储方式

猜你喜欢

转载自blog.csdn.net/lr199966/article/details/90715566