searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

一条sql的执行流程

2024-05-10 08:33:22
119
0

    1. 建立连接

         mysql是基于TCP协议进行传输的,连接的过程需要经过TCP三次握手,建立连接后, 连接器要开始校验用户名和密码,校验通过后, 连接器会获取该用户的权限, 进行保存, 基于此时获取到的用户权限进行后续数据的读取或更改.

    2. 查询缓存

        连接完成后, 客户端向mysql服务端发送sql语句,如果是select 语句, 那么先查询缓存(MySQL 8.0后则没有该步骤了 ).

    3. sql解析

         校验输入的sql语法有没有错误(表或者字段不在此次校验范围); 如果校验通过, 那么则构建sql语法树, 否则就报错;

    4. 执行sql

         1)预处理阶段   

             检查sql语句中的表或者字段是否存在;并把*符号, 扩展为表的所有字段等

         2)优化阶段

              确定语句的执行方案: 如考虑最小成本的索引.

         3)执行阶段

             根据上一步骤确定的执行方案执行不同的步骤. (如主键索引查询, 全表扫描, 索引下推).从存储引擎中读取记录,返回给客户端.

0条评论
0 / 1000
卢****丽
1文章数
0粉丝数
卢****丽
1 文章 | 0 粉丝
卢****丽
1文章数
0粉丝数
卢****丽
1 文章 | 0 粉丝
原创

一条sql的执行流程

2024-05-10 08:33:22
119
0

    1. 建立连接

         mysql是基于TCP协议进行传输的,连接的过程需要经过TCP三次握手,建立连接后, 连接器要开始校验用户名和密码,校验通过后, 连接器会获取该用户的权限, 进行保存, 基于此时获取到的用户权限进行后续数据的读取或更改.

    2. 查询缓存

        连接完成后, 客户端向mysql服务端发送sql语句,如果是select 语句, 那么先查询缓存(MySQL 8.0后则没有该步骤了 ).

    3. sql解析

         校验输入的sql语法有没有错误(表或者字段不在此次校验范围); 如果校验通过, 那么则构建sql语法树, 否则就报错;

    4. 执行sql

         1)预处理阶段   

             检查sql语句中的表或者字段是否存在;并把*符号, 扩展为表的所有字段等

         2)优化阶段

              确定语句的执行方案: 如考虑最小成本的索引.

         3)执行阶段

             根据上一步骤确定的执行方案执行不同的步骤. (如主键索引查询, 全表扫描, 索引下推).从存储引擎中读取记录,返回给客户端.

文章来自个人专栏
sql语句
1 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
1
0