zoukankan      html  css  js  c++  java
  • 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语句之前,进行权限校验,然后进行操作;

  • 相关阅读:
    实战SpringCloud响应式微服务系列教程(第八章)构建响应式RESTful服务
    说说hashCode() 和 equals() 之间的关系?
    说说Object类下面有几种方法呢?
    Redis中是如何实现分布式锁的?
    从实践角度重新理解BIO和NIO
    数据的异构实战(一) 基于canal进行日志的订阅和转换
    The base command for the Docker CLI.
    Installing Jenkins to Centos Docker
    Docker Community Edition for CentOS
    Kafka自我学习-报错篇
  • 原文地址:https://www.cnblogs.com/virgosnail/p/10322268.html
Copyright © 2011-2022 走看看