一条SQL在MySQL中是如何执行的

一条SQL在MySQL中是如何执行的

MySQL内部结构

一条SQL在MySQL中是如何执行的_第1张图片

  • 连接器:进行权限的认证,认证时,mysql会在连接器内划分一小块缓存空间,用来缓存用户的权限,因此,当在表中修改用户权限时,如果不重新连接,会发现权限是没有变化的。

  • 查询缓存:mysql的查询缓存默认是关闭的,对于一些不经常插入、更新的表可以开启缓存。但是此功能很鸡肋,在mysql8.0以后已经移除该功能,因为当我们费劲力气缓存数据后,只要有对一个表的更新,这个表上所有的查询缓存都会被清空。

  • 词法分析器:当我们sql有错误时,常常会收到“You have an error in your SQL syntax”的错误提醒,这就是词法分析器起到了作用。

  • 语法分析器:语法分析器会生成一个语法树,来规定sql语法的构成,例如select后面要跟fleids。

一条SQL在MySQL中是如何执行的_第2张图片

  • 优化器:优化器会帮我们优化sql,该走哪个索引,或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序。
    时候,决定各个表的连接顺序。
  • 执行器:开始执行的时候,要先判断一下你对这个表 T 有没有执行查询的权限,如果没有,就会返回没有权限的错误,如果有,调用引擎执行sql。

你可能感兴趣的:(mysql,sql,数据库)