天天看点

Mysql原理解析 - 基本架构1、Mysql的基本架构图

Mysql原理解析 - 基本架构

  • 1、Mysql的基本架构图
    • 1.1 连接器
    • 1.2 查询缓存
    • 1.3 分析器
    • 1.4 优化器
    • 1.5 存储引擎

1、Mysql的基本架构图

Mysql原理解析 - 基本架构1、Mysql的基本架构图

1.1 连接器

连接器负责跟客户端建立连接,获取权限、维持和管理连接

– 用户名密码验证

– 查询权限信息,分配对应的权限

– 可以使用show processlist查看现在的连接

– 如果太长时间没有动静,就会自动断开,通过wait_timeout控制,默认8小时

▪ 连接可以分为两类:

– 长连接:推荐使用,但是要周期性的断开长连接

– 短链接:

1.2 查询缓存

当执行查询语句的时候,会先去查询缓存中查看结果

之前执行过的sql语句及其结果可能以key-value的形式存储在缓存中

如果能找到则直接返回,如果找不到,就继续执行后续的阶段。

▪ 但是,不推荐使用查询缓存:

– 1、查询缓存的失效比较频繁,只要表更新,缓存就会清空

– 2、缓存对应新更新的数据命中率比较低

1.3 分析器

词法分析:Mysql需要把输入的sql字符串进行识别,解析每个部分代表什么意思

– 把字符串 T 识别成 表名 T – 把字符串 ID 识别成 列ID

▪ 语法分析:

▪ 根据语法规则判断这个sql语句是否满足mysql的语法,如果不符合就会报错“You have an error in your SQL synta”

1.4 优化器

在具体执行SQL语句之前,要先经过优化器的处理

– 当表中有多个索引的时候,决定用哪个索引

– 当sql语句需要做多表关联的时候,决定表的连接顺序

– 等等

▪ 不同的执行方式对SQL语句的执行效率影响很大

– RBO:基于规则的优化

– CBO:基于成本的优化

1.5 存储引擎

Mysql原理解析 - 基本架构1、Mysql的基本架构图

ibdata:innodb默认情况下,所有的数据文件的表空间 --> 修改如下

innodb将每一个表的数据,单独使用一份数据文件保存

Mysql原理解析 - 基本架构1、Mysql的基本架构图

db.opt:每一个数据库的结构文件

Mysql原理解析 - 基本架构1、Mysql的基本架构图

继续阅读