皮皮鬼是 霍格沃茨 的调皮捣蛋鬼,自霍格沃茨创办之初就已经存在。
阿拉霍洞开->
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。

InnoDB的redo log大小固定,write pos 和 checkpoint 之间的是“粉板”上还空着的部分,可以用来记录新的操作。如果write pos 追上 checkpoint,表示“粉板”满了,这时候不能再执行新的更新,得停下来先擦掉一些记录,把 checkpoint 推进一下。
有了 redo log,InnoDB 就可以保证即使数据库发生异常重启,之前提交的记录都不会丢失,这个能力称为crash-safe。
binlog 归档日志
之前有说,Mysql大体可以分为: server层(负责功能)、引擎层(负责存储)。binlog就是server层自己的日志 也叫归档日志。


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