一.大概过程
客户端通过网络协议把语句发送到服务端,服务端接收到请求后会分配一个线程,因为MySQL是单线程的,所以任意时刻都只有一个线程在执行,而其他的线程会处于等待状态,-》然后会再缓存里查看是否有已经查询到的结果,这里的缓存是一个哈希表,以key-value的形式存储信息,当然也可以加一个关键之来不查询缓存,不过在mysql8之后就去掉了这个过程,如果有就直接返回,-》如果没有就传给解析器进行语法分析,然后生成解析树,-》接着传给预处理器看是否有这个表与列,之后再进行权限验证,看权限是否足够,-》然后就传给优化器了,优化器会对生成的语法树进行优化,看怎么样才可以达到最快查询的效果,-》然后就是传给执行器了,执行器通过调用底层的存储引擎API来进行增删改查
原文:https://www.cnblogs.com/lollong/p/10686518.html