sql执行过程

查询sql

1. 存储引擎查询
2. 索引页是否在内存
3. 索引页中没有,则从磁盘中读入索引页到内存
4. change buffer中是否有该索引页的更新
5. 将change buffer更新数据merge到数据页中
6. 从缓存中匹配到目标索引记录,得到主键
7. 主键对应的数据页是否在内存,没有则从磁盘读入数据到内存
8. 得到查询结果

在这里插入图片描述

更新sql

1. 从buffer pool(内存中)中查看是否有这条数据,没有就从磁盘中加载到buffer pool,然后对这条记录加独占锁
2. 把更新行记录的旧值写入undo log(便于回滚)
3. 更新buffer pool中的数据
4. 执行器把对数据的修改情况写入redo log中
5. 准备提交事务,按策略把redo log刷到磁盘
6. 执行器生成这次更新的binlog,再按策略刷到binlog文件
7. 执行器调用引擎的提交事务接口,完成最终的事务提交

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值