极客时间--MySQL实战45讲(2)日志模块

极客时间MySQL实战45讲的第二讲,从一条update语句为引,讲MySQL的日志模块。update操作,除了和查询语句一样经过连接器、分析器、优化器、执行器等步骤外,还涉及到日志。以便在遇到宕机或者其他意外时,得以将数据恢复过来;
MySQL的日志模块,主要分为redo log(重做日志)和bin log(归档日志);redo log 是由Inno DB提供的,它保证了数据库在异常重启之后,之前提交的记录不丢失,称为 crash - safe。而bin log则存在于server层;
redo log和bin log主要不同点在于:

  1. redo log是Inn DB引擎特有的;bin log是MySQL的Server层实现的,所有引擎都可以使用。
  2. redo log是物理日志,记录的是“在某个数据页上做了什么修改”;bin log是逻辑日志,记录的是这
    个语句的原始逻辑,比如“给ID=2这一行的c字段加1 ”。
  3. redo log是循环写的,空间固定会用完;bin og是可以追加写入的。“追加写”是指bin log文件写到一
    定大小后会切换到下一个,并不会覆盖以前的日志。

其中,redo log是固定大小的,分组分块,如图所示,有一个check point和write pos,write point记录当前位置,新纪录追加在此,而check point则是要擦除的位置,当write pos追上check point,说明该空间写满了,需要将数据写入磁盘才能继续使用redo log,这和数据结构中的环形链表十分相像;同时,为了保证redo log和bin log保持一致,redo log的写入分了两个步骤,分成了两次commit;
bin log则是没有限制大小,采用的是追加的方式,不会覆盖掉之前的日志;

redo log工作示意图

附件为该文章的文档
链接:https://pan.baidu.com/s/1NpBDmDxfu6U1jD7zR4TPgw
提取码:6ga0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值