redo log 和 bing log 的区别

在这里插入图片描述

先介绍两个重要的日志模块

redo log(InnoDB 引擎层的日志)
  • 当一条记录需要更新时
  • InnoDB会把记录写到redo log 中
  • 并更新到内存中
  • InnoDB会在系统空闲的时候把记录更新到磁盘中
redo log的大小是固定的,比如分成四份

在这里插入图片描述

  • writte pos是当前记录位置,一边写,一遍往后移
  • check point 是当前擦的位置,一遍擦,一边往后移
  • 如果write pos 追上 check point,会停止记录,先擦掉一些记录,在开始更新记录
有了redo log,即使数据库发生异常,也不会丢失记录 --crash safe
bing log (MySQL server层)
  • MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。
  • 二进制日志包括两类文件:二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件,二进制日志文件(文件名后缀为.00000*)记录数据库所有的DDL和DML(除了数据查询语句)语句事件。
为什么有了redo log 还要有 bing log
  • redo log 是InnoDB 引擎特有的,bing log 是MySQL server 层实现的,所有引擎都可以使用
  • rodo log 是物理日志,记录的是 “在某个数据页上做了什么修改”,bing log 是逻辑日志,记录的是 “在ID=2这行记录上字段C+1”
  • redo log 是循环写的,bing log 是可以追加记录的,文件写满后会写在下一个,并不会覆盖信息

两阶段协议:

在这里插入图片描述

  • redo log 分为两步提交
    • redolog prepare
    • redolog commit
  • 保证redolog 和 binglog 日志的一致性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值