码迷,mamicode.com
首页 > 其他好文 > 详细

01|基础架构:一条查询语句的执行流程

时间:2019-01-25 23:50:09      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:实现   键值对   更改   执行   1.4   认证通过   内存   过程   顺序   

1. 基本架构

技术分享图片

  大体来说,MySQL可以分为Server层和存储引擎两部分。

  Server层包括链接器,分析器,优化器,执行器等,涵盖大多数核心服务功能,一般跨存储引擎的功能都在这一层实现,比如存储过程,触发器,视图等。

  存储引擎负责数据的存储和提取。其架构模式是插件式,支持InnoDB,MyISAM,Memory等存储引擎,MySQL5.5.5版本后默认引擎为InnoDB。

1.1 连接器

  负责和客户端建立连接,获取权限,维持和管理连接。

  常用命令:mysql    -h127.0.0.1    -P3306    -uroot  -p123456

  连接认证通过后,连接器在权限表中查询你拥有的权限,之后这个连接的权限逻辑判断都依赖此时读到的权限。这意味着一个连接一旦建立后,之后就算修改这个用户的权限,也不会影响已经存在连接的权限。

  可以通过 show processlist查看当前所有连接的状态;

  技术分享图片

  连接完成后如果没有其他操作,将处于空闲状态,空闲状态的连接存在时间有一定限制。由参数wait_timeout控制,默认8小时。

  关于连接的优化:

  1. 定期断开连接。使用一段时间或者执行过一个占用内存的大查询之后主动断开连接;

  2. 在5.7版本后,可通过执行 mysql_reset_connection 重新初始化连接;

1.2 查询缓存

  执行查询语句时,先在缓存中查询,缓存命中失败后再去数据库查询;

  一般以查询语句为 key, 查询的结果集为 value ,以键值对的形式将查询结果缓存在内存中。

  优点:查询缓存命中率较高时,可以大幅提高查询效率;

  缺点:一般情况下缓存失效的情况较多,一旦对某个表进行更新,这个表的所有查询缓存会被清空;

  8.0 版本已经不支持查询缓存功能。

1.3 分析器

   根据语法规则判断SQL语句是否满足SQL语法,判断表是否存在,列是否存在等等;

1.4 优化器

  根据索引或其他规则,优化SQL语句,可能更改SQL语句的执行顺序,但是不会影响查询结果;

1.5 执行器

  执行SQL语句之前,进行权限校验,然后进行操作;

 

01|基础架构:一条查询语句的执行流程

标签:实现   键值对   更改   执行   1.4   认证通过   内存   过程   顺序   

原文地址:https://www.cnblogs.com/virgosnail/p/10322268.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!