MySQL数据库的查询更新流程是如何运行的?
第一步:
1客户端先和MySQL建立网络连接将sqI发送到server层。
2.经过分析器解析sql语法,优化器选择索引生成执行计划,最终给到执行器,调用Inno DB函数接口。
第二步:
读操作
Inno DB存储引擎会先检查Buffer Pool中是否存在所需的B+树数据页,如果存在,直接返回,不存在,从磁盘中读取相应的数据页加载到Buffer Pool中,再返回数据。如果查询的数据是热点数据,还会将数据页加入到自适应哈希索引中,加速后续的查询。
写操作
先将数据写入Buffer Pool,并生成相应的Undolog记录,方便在事务回滚时,能够恢复数据的原始状态
再将写操作记录到Redo Log Buffer(这些
Redo Log会周期性写入磁盘中的Redo Log文件中,【防止数据库崩了,提交的事务丟失)对于辅助索引的更新操作,Inno DB会将这些更新暂时存储在Change Buffer中,等到相关的索引页被读取到Buffer Pool时,再进行实际的更新操作,从而减少磁盘IO,提高写入性能。
同时,所有的变更都会记录到server层的binlog中,以便进行数据恢复。