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 存储引擎

在这里插入图片描述
ibdata:innodb默认情况下,所有的数据文件的表空间 --> 修改如下
innodb将每一个表的数据,单独使用一份数据文件保存
在这里插入图片描述
db.opt:每一个数据库的结构文件
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ws13575291650/article/details/113777154