美文网首页
查询语句执行流程

查询语句执行流程

作者: HannahLi_9f1c | 来源:发表于2020-05-14 22:09 被阅读0次

Mysql逻辑架构

image.png
  • 如图所示,Mysql的架构分为Server层和引擎层。Server层由连接器、分析器、查询缓存、优化器和执行器组成,Server层主要是完成存储过程、触发器、视图等。存储引擎用来存储数据,提供数据读写接口。
连接器

连接语句

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

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

show processlist

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

  • 长连接是指多个连接持续请求请求可以复用一个连接。由于连接的创建是比较复杂的,所以应该尽量使用长连接。但是长连接会导致内存涨的比较快,因为内存是管理在连接对象中的。解决方法有:定时断开长连接;如果是5.7或者更高版本,可以执行

mysql_reset_connection

查询缓存

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

分析器

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

优化器

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

执行器

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

存储引擎

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

相关文章

网友评论

      本文标题:查询语句执行流程

      本文链接:https://www.haomeiwen.com/subject/prffohtx.html