一句SQL在执行过程中发生了什么?-sql文件怎么打开

一句SQL在执行过程中发生了什么?

首先MYSQL是典型的C/S架构,即Client/Server架构,服务器端程序使用mysqld,主要包括三层:

  1. 连接层:客户端与服务端进行连接,客户端发送SQL给服务端;
  2. SQL层:对SQL进行查询处理;
  3. 存储引擎层:操作数据库文件,负责数据库的存储与读取;

一句SQL在执行过程中发生了什么?

SQL层的执行顺序;

  1. 查询缓存:如果查到之前有缓存,则直接返回结果,如果没有,进入下一步,因为效率太低,8.0之后去掉了这个功能;
  2. 解析器:对语句进行语法、语义分析;
  3. 优化器:确定sql的执行路径,比如全表检索、索引检索;
  4. 执行器:判断用户是否有权限,有权限就返回结果,如果是8.0以下的版本还会进行缓存;

收集mysql执行时所使用的资源情况:

select @@ profiling

如果=0代表关闭,以下代码打开:

set profiling=1

执行完一个语句之后,如下方式查看占用资源:

show profiles

也可以指定查询的query id,

show profile for query 2

推荐阅读