步骤如下:
1、数据更新时执行器先找buffer pool缓存池中,如果在缓冲池中,同时返回给执行器。
2、如果未命中缓存,需要先从磁盘读入内存,然后再返回给执行器。
3、不管是否命中缓存,都需要将更新前的旧数据写入到undo中。
4、更新内存,此时变成脏数据,后续会调用接口将数据落盘。
5、同时将这个更新操作记录到redo log里面,此时redo log处于 prepare 状态。然后告知执行器执行完成了,随时可以提交事务。
7、执行器生成这个操作的binlog,并把binlog写入磁盘。
8、执行器调用引擎的提交事务接口,引擎把刚刚写入的redo log改成提交状态,更新完成。
最后数据落盘,已运行出结果。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有