一、sql更新语句的过程
update语句会将所有的查询缓存都清空。
更新流程涉及两个重要的 日志模块: redo log(物理日志)、bin log(逻辑日志)
《孔乙己》九点老板粉板记赊账记录的概念。
1、不忙时,等不忙或打烊后再把粉板写到账本里
2、很忙,粉板写完后需要停下来,把粉板写到账本里,擦掉粉板,继续记账到粉板。
二、redo log和binlog的区别
1、redo log是存储引擎层的日志。第三方公司以插件形式实现的,innoDB引擎独有特有的。 bin log是MySQL的Server层实现的,所有的存储引擎都能使用。
2、redo log是物理日志,记录的是“在某个数据页上做了什么修改”;binlog是逻辑日志,记录的是这个语句的原始逻辑,比如“给id=2的这一行的age字段加1”。
3、redo log是循环写的,空间固定会用完;binlog是可以追加写的。“追加写”是binlog写到一定的大小后就会切换到下一个,并不会覆盖以前的日志。
三、作用
redo log 的设置参数: innodb_flush_log_at_trx_commit = 1,时每次的记录都会持久化到本地磁盘。
bin log设置sync_binlog=1时每次的日志也都会持久化到本地磁盘。