1、数据更新时执行器先找buffer pool缓存池中,如果在缓冲池中,同时返回给执行器。
2、如果未命中缓存,需要先从磁盘读入内存,然后再返回给执行器。
3、不管是否命中缓存,都需要将更新前的旧数据写入到undo中。
4、更新内存,此时变成脏数据,后续会调用接口将数据落盘。
5、同时将这个更新操作记录到redo log里面,此时redo log处于 prepare 状态。然后告知执行器执行完成了,随时可以提交事务。
7、执行器生成这个操作的binlog,并把binlog写入磁盘。
8、执行器调用引擎的提交事务接口,引擎把刚刚写入的redo log改成提交状态,更新完成。
最后数据落盘,已运行出结果。
mysql监听mysql,postgresql mysql 语法比较,mysql默认记录最大存储,计算mysql表数据大小,mysql 没有redolog,mysql 根据分组统计