MySQL执行流程图
2022-11-18 19:04:39 0 举报
MySQL执行行为分析
作者其他创作
大纲/内容
Redo日志(innodb特有)
调用引擎
IO线程
更新后
7、写入commit标识到Redo日志,提交事务完成,该标识的目的是为了保证事务提交后Binlog和Redolog数据一致
studentName = LI
5、准备提交事务并将Redo日志写入磁盘
pageid =5name = zhangsan
更新磁盘的性能非常差,而更新内存的效率非常高,所以才会起IO线程来执行随机写入磁盘的操作
Binlog日志用来恢复磁盘数据
执行器
引擎层
执行update studentName=LI where id = 5 操作
4、写Redo_log日志
3、更新内存数据值
6、准备提交事务Binlog日志写入磁盘
如果步骤7事务提交成功,而在IO线程执行写磁盘操作前,数据库宕机的话,可以从Redo日志中查找到commit提交成功的标识,恢复Pool数据,最终由IO线程更新到磁盘空间去
Redo LogBuffer
8、随机写入磁盘以page为单位写入完成后,磁盘中的name更新为LI
连接器-建立连接,鉴权操作
undo日志文件记录为修改前的旧数据
Binlog日志(属于Server层)
如果事务提交失败,可以将undo日志中旧数据重新加载到Pool中去,进行回滚操作
page
select SQL_CACHE
分析器-分析语法,词法
优化器-选择索引,执行方案确认
innodb存储引擎
Buffer Pool
数据库的增删改查都是在Buffer Pool中进行的,Pool的容量设置为内存的60%
Server层
使用trace工具,可以查看执行方案的成本cost属性,值越大成本越高
2、保存未修改记录的旧数据,便于回滚操作undo_log是innodb特有
磁盘文件(ibd)
1、将id=5的数据行所在的那页数据,加载到Buffer Pool中去
0 条评论
下一页