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

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

20200220 01.MySQL 架构与 SQL 执行流程_第1张图片

  1. 客户端

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

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

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

    20200220 01.MySQL 架构与 SQL 执行流程_第2张图片

  4. 查询优化器

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

    我们的数据存储的数据库中,对于不同的存储引擎对于不同的需求进行而创建的;
    `show table status from `tableName`;`
    使用上述语句可以查看使用的存储引擎

20200220 01.MySQL 架构与 SQL 执行流程_第3张图片

如果对数据一致性要求比较高,需要事务支持,可以选择 InnoDB。
如果数据查询多更新少,对查询性能要求比较高,可以选MyISAM。
如果需要一个用于查询的临时表,可以选择 Memory。

你可能感兴趣的:(mysql)