1.一条select语句执行流程
一条SQL语句查询过程
一条SQL执行过过程会经过连接器、查询缓存、解析器、执行器以及存储引擎等组件,执行过程图(仿小林coding)如下:
MYSQL架构分为Server层和存储引擎层。Server层负责建立连接、分析和执行SQL;存储引擎负责数据的存储和提取。
连接器:TCP三次握手建立连接、校验用户名和密码、校验权限
查询缓存:SQL需分毫不差才能从查询缓存中查询结果
词法解析:检查SQL中关键词是否存在,如from、where、group by 、having、select、order by、limit
语法解析:检查SQL语句是否存在问题
预处理器:确定表或字段是否存在;将select *中的* 扩展为表上的所有列
优化器:确定SQL语句的执行方案,即表中存在多个索引时,决定使用哪个索引。可在查询语句前加上explain查看SQL语句执行过程中,possible key、key以及type字段的值。进而分析SQL语句查询过程中的执行计划和优化过程。
执行器:主键索引查询、全表扫描、索引下推