Mysql底层剖析——Mysql逻辑架构与执行流程

文章目录

  • 一、Mysql逻辑架构
    • 1、第一层
    • 2、第二层
    • 3、第三层
  • 二、MySQL执行流程
    • 1、查询缓存
    • 2、语法解析器和预处理
    • 3、查询优化器
    • 4、连接管理与安全性
    • 5、优化与执行

一、Mysql逻辑架构

Mysql底层剖析——Mysql逻辑架构与执行流程_第1张图片

1、第一层

        主要负责连接处理、授权认证、安全

2、第二层

        负责查询、解析、优化、缓存以及所有内置函数,所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。

3、第三层

        包含存储引擎,存储引擎负责MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信,这些接口屏蔽了不同引擎的差异。存储引擎API包含几十个一层函数,例如开启事务函数等。不同存储引擎相互隔离,不会通信,主要的作用是响应上层服务器的请求。

二、MySQL执行流程

Mysql底层剖析——Mysql逻辑架构与执行流程_第2张图片

1、查询缓存

        在解析一个查询语句之前,如果查询缓存是打开的,那么MySQL会优先检查这个查询是否命中查询缓存中的数据,这个检查是通过一个对大小写敏感的哈希查找来实现的,只要有一个字节不同,就不会匹配缓存结果,这种情况就会进入下一阶段的处理。、
        如果当前的查询恰好命中了查询缓存,那么在返回查询结果之前MySQL会检查一次用户权限。这是无须解析查询SQL语句的,因为在查询缓存中已经存放了存放了当前查询需要访问的表新信息,如果权限没有问题,MySQL会跳过所有其他阶段,直接拿到结果并返回给客户端,查询不会被解析,不用生存执行计划,不会被执行。

2、语法解析器和预处理

        首先,mySQL通过关键字将SQL语句进行解析,并生成一颗对应的解析树,MySQL解析器将使用MySQL语法规则验证和解析查询MySQL语法规则和解析查询验证是否使用错误的关键字,及关键字的顺序是否正确等。
        预处理器则根据一些MySQL规则进一步检查解析树是否合法,例如将检查数据表和数据列是否存在,还会解析名字和别名。

3、查询优化器

        到了查询优化器语法树就会被认为是合法的,并且由优化器转化成执行计划,一条查询可以有很多种执行方式,最后都返回了相同的结果,优化器的作用就是找到这其中最好的执行计划。使用基于成本的优化器。

优化策略包括静态优化和动态优化

静态优化可以直接对解析树进行分析,并万和城那个优化,静态优化在第一次完成后就一直有效,可以认为是编译时优化。

动态优化则和查询的上下文有关,每次执行时都需要重新评估。
https://blog.csdn.net/weixin_42353053/article/details/113224543?

4、连接管理与安全性

        一个客户端连接只会拥有一个线程,这个连接的查询都会在这个线程执行,是由服务器自行创建的。

5、优化与执行

        MySQL会解析查询,并创建解析树,解析树可以重写查询,决定表的读取顺序,选择合适的索引对查询语句进行优化。用户可以通过特殊的关键字来提示优化器,影响它的决策过程,也可以请求优化器解释优化过程的各个因素。存储引擎对优化有影响,优化器会请求存储引擎提供容量或某个具体的开销信息,以及表的统计信息。对于select语句,解析查询前,服务器会先检查查询缓存,如果能在其中找到需要的数据,就直接返回,不会执行查询解析、优化和执行的整个过程。

你可能感兴趣的:(Mysql底层剖析,mysql,架构,数据库)