美文网首页
2、皮皮鬼---一条SQL修改语句是如何执行的?

2、皮皮鬼---一条SQL修改语句是如何执行的?

作者: i灬Mango | 来源:发表于2019-03-04 18:58 被阅读0次

皮皮鬼是 霍格沃茨 的调皮捣蛋鬼,自霍格沃茨创办之初就已经存在。

阿拉霍洞开->

mysql> create table T(ID int primary key, c int);
mysql> update T set c=c+1 where id=2;

biubiubiu -> 连接器 -> 分析器,更新sql,查询缓存失效->优化器 选用主键索引->执行 走你

与查询不同 更新还涉及到两个重要的日志模块。

redo log

讲故事:《孔乙己》 酒店掌柜有一个粉板,专门记录客人的赊账记录,如果赊账的人不多,可以先记在粉板上,当然老板还有一个专门的账本。

Mysql WAL技术,Write-Ahead Logging
当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写到 redo log。


image.png

InnoDB的redo log大小固定,write pos 和 checkpoint 之间的是“粉板”上还空着的部分,可以用来记录新的操作。如果write pos 追上 checkpoint,表示“粉板”满了,这时候不能再执行新的更新,得停下来先擦掉一些记录,把 checkpoint 推进一下。
有了 redo log,InnoDB 就可以保证即使数据库发生异常重启,之前提交的记录都不会丢失,这个能力称为crash-safe。

binlog 归档日志

之前有说,Mysql大体可以分为: server层(负责功能)、引擎层(负责存储)。binlog就是server层自己的日志 也叫归档日志。

image.png
image.png

鸣谢 林晓斌 发布在极客时间上的Mysql45讲 皮皮鬼卖萌支付订阅的哦~~~

相关文章

网友评论

      本文标题:2、皮皮鬼---一条SQL修改语句是如何执行的?

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