【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与服务层交互

相关推荐
数智化管理手记1 小时前
手工统计指标误差大、效率低?指标管理系统如何告别人工算数痛点?
大数据·运维·数据库·人工智能·云计算
ShiXZ2137 小时前
Redis 常用指令全集:redis-cli 实战速查手册
数据库·redis·缓存
晓子文集8 小时前
Tushare接口文档:期货日线行情(fut_daily)
大数据·数据库·金融数据·量化投资·tushare
FII工业富联科技服务8 小时前
工业设备运维如何Agentic化?拆解Factory Brain的设备运维架构
大数据·运维·人工智能·架构·制造
WA内核拾荒者8 小时前
WhatsApp 账号异常检测的自动化告警系统设计
数据库·python·自动化
qq29539 小时前
2026 财搭子决策模拟器:多智能体投研架构能力拆解
大数据·人工智能·架构
龙仔72512 小时前
人大金仓OS_Core数据库自动备份实施笔记(银河麒麟Linux)
linux·数据库·笔记·备份·人大金仓
老杨聊技术12 小时前
CentOS 7 安装 MySQL 8 保姆级教程
linux·mysql·centos
sunxr.22712 小时前
Mysql-----最后一次作业
数据库·mysql
普通网友12 小时前
Python FastAPI 异步数据库管理
数据库·fastapi