如何执行一条SQL更新语句(总结)

MYSQl架构

连接器 --- 分析器 --- 优化器 --- 执行器 --- 执行引擎

两大日志处理模块

更新过程中涉及两个重要的日志模块,redo log(重做日志),binlog(归档日志)

RedoLog

1. 在MYSQl中,不可能每一次更新操作都写进磁盘(因为IO,查找成本较高)
2. 因此利用RedoLog来做一个先写日志,再写磁盘的操作
3. 有了RedoLog,InnoDB就能保证即使数据库发生重启,之前提交的记录都不会丢失,这个能力成为crash-safe

Wal技术

1. 全称是Write Ahead Logging,意思就是先写日志,再写磁盘

RedoLog内存结构

1.InnoDB的RedoLog是固定大小的,可以配置为一组四个文件,每个文件的大小都是1GB,那么这个REdoLog就可以记录4GB的操作
2.可以看成一个环状结构,有两个指针,一个指向当前记录的位置(write pos),一个指向当前要擦除的位置(checkpoint)

Binlog

可以用来做整个库的数据恢复工作(全量备份+固定时间点的binlog)

BinLog和RedoLog的区别

1. redoLog是InoDB引擎特有的日志,Server层特有的日志就是binlog
2. redoLog是物理日志,记录的是在某个数据页上进行了修改,Binlog是逻辑日志,记录了这个语句的原始逻辑,比如给这个表第二列的c字段加一
3. redoLog是循环写的,空间是固定大小,binLog是追加写的,写到一定大小并不会覆盖以前的日志

更新日志的两阶段提交

 redoLog的写入拆成了两个步骤,prepare和commit,这就是两阶段提交

为什么要有两阶段提交?

		为了让两份日志之间的逻辑一致
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值