美文网首页
msyql redo log与undo log原理

msyql redo log与undo log原理

作者: 奋斗的韭菜汪 | 来源:发表于2020-06-12 16:09 被阅读0次

    redo log:
    (是一个覆盖写的过程,可以指定文件大小,默认48M)恢复操作,重新操作(最新的数据先保存到redo Log,注不是事物提交才写入的,而是事物执行过程中就开始写入redo log)
    redo log:是为了实现事务的持久化而出现的,防止发生故障(断电等)的时间点,尚有脏未写入磁盘,在重启mysql服务的时候,根据redo log重新进行持久化
    redo buffer 写入redo log是顺序io
    redo log有三种策略(innodb_flush_log_at_trx_commit=0、1、2)
    最佳性能(innodb_flush_log_at_trx_commit=0) 每隔一秒 redo buffer -> redo log
    强一致(innodb_flush_log_at_trx_commit=1) 每次事务提交 redo buffer -> redo log
    折衷(innodb_flush_log_at_trx_commit=2)每隔一秒、每次事务提交 redo buffer -> redo log

    Undo Log:
    1、事务开始之前,数据备份到undo log(是为了事务的原子性而出现的产物)
    事务错误或者rollback,mysql会利用undo log中备份的数据恢复到事务开始之前的状态(实际是从内存的undo buffer中恢复到开始之前的状态,undo buffer 最终持久化到磁盘的 undo log)
    2、undo log在mysql innodb存储引擎中用来实现多版本并发控制
    快照读:(通过快照读的mvcc解决脏读问题)
    普通的select就是快照读,也就是快照版本(历史版本)
    当前读:(通过当前读的临键锁解决幻读问题)
    读取的是最新的版本,通过锁的机制保证数据无法通过其他事物进行修改

    相关文章

      网友评论

          本文标题:msyql redo log与undo log原理

          本文链接:https://www.haomeiwen.com/subject/rnfntktx.html