执行一个SQL,MySQL内部的执行过程是什么?如果要深入MySQL的话,那无可避免要知道其内部的一个执行流程。
在学习SQL的整个执行流程后,就可以在更高的层面去考虑问题,自然也就能更充分的去优化SQL。
来看一下吧。
SQL执行流程
- 首先是由客户端或者其他接口传入将要执行的SQL语句。
- mysql服务器接收到此条SQL,第一步就是去检查缓存模块,与我们自身设计缓存的目的一样,如果能够直接命中相应的缓存,则可以直接返回对应的缓存结果,无须进行下面操作;如果没有命中,则继续往下执行。
- 随后,SQL语句进入解析器模块,mysql服务器针对SQL进行解析、预处理操作,随后进入下一步。
- 经由mysql服务器预处理后,紧接着就是进入到mysql服务器的查询优化器模块,查询优化器模块根据SQL生成对应的SQL执行计划。
- 生成出了SQL执行计划,mysql服务器会根据SQL执行计划,调用相应的API接口去执行查询;当然这里也和这张表的存储引擎有所关联,不同的存储引擎有着不同的API接口。
- 通过这些API接口,我们就可以真正的接触到数据了,经由API接口去查看出对应的数据结果集。
- 生成出了数据结果集后,就可以将其反馈给客户端了,并且还要将这个结果集记录在缓存模块中,如此就可以在一定情况下不用再执行一遍了。
综上所述,只是个简单的介绍,具体如何解析,如何预处理等等其实还有很多底层的知识,这些远比写出来的复杂,感兴趣的话,需要花一些时间去学习。
整个SQL的执行流程就是这些,这个问题其实在面试中也可能碰到,毕竟是一个全局性的知识。