MySQL架构原理之运行机制
所谓运行机制即MySQL内部就如生产车间如何进行生产的。如下图:
1、建立连接,通过客户端/服务器通信协议与MySQL建立连接。MySQL客户端与服务端的通信方式是"半双工"。对于每一个MySQL的连接,时刻都有一个线程状态来标识这个连接正在做什么。
通信机制:
线程状态:
show processlist;//查看用户正在运行的线程信息,root用户能查看所有线程,其他用户只能查看自己的。
2、查询缓存:MySQL的一个可优化查询的地方,如果开启了查询缓存且在查询缓存过程中查询到完全相同的SQL语句,则将查询结果直接返回给客户端;如果没有开启查询缓存或者没有查询到完全相同的SQL语句则会由解析器进行语法语义解析并生成“解析树”。
3、解析器将客户端发送的SQL进行语法解析,生成“解析树”。预处理器根据一些MySQL规则进一步检查“解析树”是否合法,例如这里将检查数据表和数据列是否存在,还会解析名字和别名,看看它们是否有歧义,最后生成新的“解析树”。
4、查询优化器,根据“解析树”生成最优的执行计划。MySQL使用很多优化策略生成最优的执行计划,可以分为两类:静态优化(编译时优化)、动态优化(运行时优化)。
5、查询执行引擎负责执行SQL语句,此时查询执行引擎会根据SQL语句中标的存储引擎类型,以及对于的API接口与底层存储引擎缓存或者物理文件的交互得到查询结果并返回给客户端。若开启查询缓存,这时会将SQL语句和结果完成地保存到查询缓存中,以后若有相同的SQL语句执行则直接返回结果。