一张图介绍mysql执行过程

执行一条update 语句执行过程。
第一步:

建立链接,并验证用户权限

第二步:

查询缓存,如果缓存中存在数据,则直接返回,缓存中不纯在数据,则访问数据库(select)

第三步:

分析器:词语解析语法解析

第四步:

优化器:执行索引

第五步:

加载缓存数据id=N的记录所在页数据

第六步:

写入数据的旧值,位于undo日志中,便于事务回滚

第七步:

更新内存中数据(缓存池)

第八步:

写入redo日志

第九步:

写入redo日志

第十步:

准备提交事务,redo日志写入磁盘

第十一步:

准备提交事务,redo日志写入磁盘

第十二步:

准备提交事务,binlog日志写入磁盘,binlog日志属于server层,主要用于回复数据库磁盘里的数据

第十三步:

写入commit标记的redo日志,提交事务完成后,该标记为了保证redo与binlog日志里数据保持一直

如果事务提交,redo日志还没有写入磁盘,数据库就发生了宕机,可以通过redo日志回复缓存中的数据

第十四步:

更新数据:已page为单位的随机写入到磁盘

下边附带一张完整的mysql执行过程图
一张图介绍mysql执行过程_第1张图片

你可能感兴趣的:(mysql,mysql)