SQL语句的执行流程

摘自:https://www.itzhai.com/database/insight-into-the-underlying-architecture-of-mysql-buffer-and-disk.html*

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”,获取到匹配的记录
原文地址:https://www.cnblogs.com/pcblogs/p/13208959.html