select语句的执行流程(MySql)

学习了极客时间MySql课程,做个总结
以一条select语句为例:select * from T where ID=4 ,梳理下执行的流程

一条sql语句在执行过程中需要经过连接器、分析器、优化器、执行器等,也有可能会经过查询缓存,如图所示
在这里插入图片描述
连接器

  • 想要连接数据库那么必须是要通过连接器,连接器负责与客户端建立连接、获取权限、维持和管理连接。
  • 当你输入了用户名和密码后,连接器会在权限表中查询你拥有的权限,之后本次连接中你对表能否操作查询删除修改等,都依赖于此时读取到的权限。
  • 假设此时修改了你的权限,那么也是不会影响你本次的连接的,只有在下一次创建连接,查询权限的时候才会生效。

查询缓存

  • 在经过连接器之后,会执行第二步查询缓存,在MySql拿到查询后,会先到查询缓存查看是否执行过这条语句,之前执行的结果会以key-value对的形式存在,如果不在查询缓存中,会继续执行后面的极端,如果命中缓存则直接返回结果。在MySql8.0之后去掉了查询缓存的功能。

分析器

  • 分析器会先做“词法分析”,识别出sql里的字符串分别是什么,读出“select”关键字对出这是一条查询语句,把字符串T识别成“表T”
  • “语法分析”,根据词法分析的结果,判断该条sql是否满足MySql的语法

优化器

  • 优化器的作用在于选择最优的逻辑执行sql,例如在一个语句进行多表关联的时候,决定各个表的连接顺序

执行器

  • 在开始执行前,先判断你对表T是否有执行查询的权限,没有就返回没有权限的错误,有权限则继续执行
  • 执行器根据表的引擎定义,调用该引擎提供的接口。
发布了239 篇原创文章 · 获赞 174 · 访问量 34万+

猜你喜欢

转载自blog.csdn.net/Maybe_ch/article/details/99649320