20200220 01.MySQL 架构与 SQL 执行流程

数据库的操做方式有许多种,可是MySql的工做流程数怎样的呢?

image.png

  1. 客户端mysql

    执行sql语句与服务器进行链接
  2. 查询缓存redis

    执行下面的语句查看MySql默认缓存是否关闭
    show variables like 'query_cache%';
    默认是关闭的,咱们在使用的通常不使用默认的缓存,都是使用一些专门的缓存器,如 redis,还有Mybatis的一级缓存之类的;
    咱们不是用MySql默认的缓存主要是由于sql语句改变或者任意一条数据发生变化都直接失效了;
  3. 解析器和预处理sql

    咱们在查询的时候为何sql语句出现语法的错误时候会报错呢?
    这就是依靠解析器和预处理器来进行处理解析的
    解析器:会对一个完整的sql语句进行打碎,获得一个个单词,获得的是什么类型的语句
        预处理器:根据MySql的语句规则,对sql进行语法的解析,生成数据结构,获得一个解析树;

    image.png

  4. 查询优化器数据库

    咱们所使用的sql语句到mysql服务器中不是最终结果,而优化器会对解析器生成的解析树生成不一样的执行计划,选择最优的执行计划,而mysql中使用的优化器是基于开销的优化器,咱们要选用开销最小的优化器;
    在使用sql语句的时候能够使用 EXPLAIN关键字加在语句的最前面查看执行计划;
  5. 存储引擎缓存

    咱们的数据存储的数据库中,对于不一样的存储引擎对于不一样的需求进行而建立的;
    `show table status from `tableName`;`
    使用上述语句能够查看使用的存储引擎

2020-02-20_192756.png

若是对数据一致性要求比较高,须要事务支持,能够选择 InnoDB。 若是数据查询多更新少,对查询性能要求比较高,能够选MyISAM。 若是须要一个用于查询的临时表,能够选择 Memory。
相关文章
相关标签/搜索