SQL语句的执行流程
1 MySQL架构
MySQL架构涉及到的常用组件:
2 查询SQL执行流程
如执行以下SQL语句:
select * from t_user where user_id = 10000;
2.1 MySQL客户端与服务器端建立连接
建立过程:
- 客户端通过SQL语句建立连接请求
- 经过三次握手与服务器建立TCP连接
- 连接器接收请求后使用用户密码进行身份验证
- 验证通过后,获取用户的权限信息缓存起来,连接之后的操作都是基于该缓存中的权限执行SQL
2.2 执行SQL
- 服务端接收到客户端的查询SQL后,先尝试从查询缓存中查询该SQL语句是否已经有缓存的结果了,如果有直接返回结果,没有就执行下一步
- 分析器拿到SQL语句后会尝试对SQL语句进行词法分析和语法分析,检验SQL语句的正确性,通过之后继续往下执行
- 优化器拿到分析器的SQL之后,开始继续解析SQL,判断需要走什么索引,根据实际情况重写SQL,最终生成执行计划
- 执行器根据执行计划执行SQL,执行之前会进行操作权限检验
- 执行器拿到select * from t_user where user_id=10000的所有记录,在依次判断user_name是不是等于”arthinking”,获取到匹配的记录