查询语句执行流程

2020-05-14  本文已影响0人  HannahLi_9f1c

Mysql逻辑架构

image.png
连接器

连接语句

mysql -h ip -p port -u user -p

连接器用来处理客户端的连接。当有客户端通过TCP连接到服务器时,连接器首先检查用户权限,没有权限或者用户名或密码错误则显示错误信息。连接之后可以通过

show processlist

查看连接状态。保持连接时间是8小时。

mysql_reset_connection

查询缓存

查询缓存是缓存查询的结果集,但是当表更新之后,关于这张表的查询缓存会全部失效,因此查询缓存命中会很低。因此一般会禁用查询缓存。可以通过
query_cache_type=DEMAND禁用。在8.0以及更高版本中,已经去掉查询缓存了。

分析器

分析器会对语句进行词法分析和语法分析,其中词法分析会将语句拆分成多个字符。取出其中的关键字和数据库表名和字段等字符串。然后通过语法分析解析语句,生成语法树,这个时候会检查语句是否符合语法。

优化器

优化器会选择适当的执行方式,比如说多表进行join时是先取哪张表,选择索引还是全表扫描,选择哪个索引等,这些选择会由选择器进行分析选择最优方案。

执行器

执行器执行语句时会判断对于这张表是否有权限,没有的话保错。否则扫描行选择结果集并返回。

存储引擎

存储引擎可以在create table时指定,5.5.5版本之后默认引擎是innoDB。innoDB由于支持事务、行级锁,因此是使用较为频繁的执行引擎

上一篇下一篇

猜你喜欢

热点阅读