一条SQL语句的执行是什么样的?

1、执行步骤总览

一条SQL语句的执行
客户端JDBC、ODBC触发一条sql语句的运行。

2、具体架构

2.1 连接器

身份认证和权限相关部分的管理。如果用户名密码通过校验,会去权限表里查询该用户的权限。后续只要连接不断开,即使管理员修改了用户的权限,用户权限也维持刚开始查询时的状态。

2.2 查询缓存

连接建立后,执行查询语句的时候,会先查询缓存,MySQL 会先校验这个 sql 是否执行过,以 Key-Value 的形式缓存在内存中,Key 是查询预计,Value 是结果集。如果缓存 key 被命中,就会直接返回给客户端,如果没有命中,就会执行后续的操作,完成后也会把结果缓存起来,方便下一次调用。当然在真正执行缓存查询的时候还是会校验用户的权限,是否有该表的查询条件。

2.3 分析器

若未命中目标,则会进入分析器,分析器分为两个步骤:
词法分析:一条 SQL 语句有多个字符串组成,首先要提取关键字,比如 select,提出查询的表,提出字段名,提出查询条件等等。做完这些操作后,就会进入第二步。

语法分析: 判断你输入的 sql 是否正确,是否符合 MySQL 的语法。

2.4 优化器

优化器的作用就是它认为的最优的执行方案去执行,如果有索引选择索引。

2.5 执行器

MySQL 就准备开始执行了,首先执行前会校验该用户有没有权限,如果没有权限,就会返回错误信息,如果有权限,就会去调用引擎的接口,返回接口执行的结果。

2.7 存储引擎

主要负责数据的存储和读取,采用可以替换的插件式架构。现在最常用的存储引擎是 InnoDB。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值