• MySQL:基础架构和工作流程


    【参考文章】:01|基础架构:一条查询语句的执行流程

    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语句之前,进行权限校验,然后进行操作;

  • 相关阅读:
    操作系统——生产者消费者
    flutter如何搭建android环境
    小程序uni-app图片预览uni.previewImage会触发onshow这个生命周期
    小程序 uni-app动态更改标题
    小程序uni-app处理input框将页面往上推动的解决办法
    去除小程序scroll-view产生的横向滚动条
    小程序生命周期详解
    h5移动端像素适配 postcss-pxtorem和amfe-flexible
    vue平铺日历组件
    组合数
  • 原文地址:https://www.cnblogs.com/virgosnail/p/10322268.html
Copyright © 2020-2023  润新知