【MySQL是怎么运行的一】逻辑架构

MySQL可以分为连接层、服务层和引擎层

连接层

  1. 客户端发起请求,MySQL服务器会从数据库连接池中取出一个线程对接,TCP三次握手后建立连接。
  2. 客户端发起身份验证(用户名、密码),验证失败:Access denied for user,验证成功则连接成功

服务层

**SQL api:**提供api供客户端调用,如crud

**缓存:**相同的请求缓存一份结果,因为命中率低,新版本MySQL已经废弃

**解析器:**将原始sql经过预发解析后生成语法树,会校验sql语法是否正确,用户是否有权限等

**优化器:**对sql进行优化处理,生成执行计划

sql 复制代码
CREATE TABLE s1
(
    id           INT AUTO_INCREMENT,
    key1         VARCHAR(100),
    key2         INT,
    key3         VARCHAR(100),
    key_part1    VARCHAR(100),
    key_part2    VARCHAR(100),
    key_part3    VARCHAR(100),
    common_field VARCHAR(100),
    PRIMARY KEY (id),
    KEY idx_key1 (key1),
    UNIQUE KEY idx_key2 (key2),
    KEY idx_key3 (key3),
    KEY idx_key_part (key_part1, key_part2, key_part3)
) ENGINE = INNODB
  CHARSET = utf8;

初始sql是这样的,不符合最左匹配原则

sql 复制代码
explain 
select *
from s2
where key_part2 = 'a'
  and key_part1 = 'b';

经过优化器优化后变为

sql 复制代码
explain
select *
from s2
where key_part1 = 'b'
  and key_part2 = 'a';

结果

引擎层

负责物理数据的读取和写入,直接与磁盘打交道,通过api与服务层交互

相关推荐
这个DBA有点耶16 小时前
分布式数据库到底该不该上?从判断标准到架构选型的实战思考
数据库·架构·dba
楚识科技17 小时前
破除通用瓶颈——企业级OCR定制化开发的架构思维与实战范式
架构·ocr
01_ice17 小时前
MySQL库和表的操作
数据库·mysql
刘立军17 小时前
RESTful 与契约优先:规范接口定义,统一接口设计范式
后端·架构·ai编程
heimeiyingwang17 小时前
【架构实战】分布式事务:从CAP定理到Seata实战,一文讲透跨服务数据一致性
分布式·架构
布莱克60518 小时前
数据库索引分类:数据结构、物理存储与逻辑角度详解
数据结构·数据库
SelectDB18 小时前
DeepSeek Harness 接入 Litefuse:完善 Agent 可观测与评估能力
数据库
独孤九剑打醒他18 小时前
RGB‑TOT 全架构系统仿真:红外波长簇光通信完整验证
架构
这个DBA有点耶19 小时前
从库延迟的“二次放大”效应:一次大事务,拖垮整个读写分离
数据库·mysql·架构
LearnYard19 小时前
自然语言驱动的数据图表生成:几款工具功能对比实践
数据库·百度·powerpoint