mysql结构
-
连接层
- 功能:客户端与服务端连接建立,用户名和密码。管理客户端连接、身份验证、权限校验
- 核心组件:
- 连接池(复用连接资源,避免频繁创建销毁)
- 线程池(优化并发请求处理)
- 服务层
- 核心模块:
- SQL接口:接收SQL命令(DML/DDL/存储过程)
- 解析器:语法/语义分析,生成解析树1
- SQL语句:
SELECT name, age FROM users WHERE id=100 AND status='active' -
输入字符串被拆分为Token序列:
-
[Keyword:SELECT] [Identifier:name] [Comma:,] [Identifier:age] [Keyword:FROM] [Identifier:users] [Keyword:WHERE] [Identifier:id] [Operator:=] [Number:100] [Keyword:AND] [Identifier:status] [Operator:=] [String:'active']
-
- SQL语句:
- 优化器:生成最优执行计划(如索引选择)
-
优化策略
-
条件简化:移除恒真条件(如
WHERE 1=1)或无效表达式 -
索引下推:将过滤条件提前到存储引擎层处理(减少回表)
-
索引合并:对多条件查询合并多个索引扫描结果(需满足特定条件)
-
-
- 查询缓存:MySQL 8.0已移除该功能
- 流程
A[SQL请求] --> B(SQL接口) B --> C(解析器) C --> D(优化器) D --> E(执行引擎)
- 核心模块:
- 存储引擎层(Storage Engine Layer)
- 作用:负责数据的物理存储与检索
- 对比
- innodb:支持事务(ACID,原子性,一致性,隔离性,永久性),表级锁行级锁可以并发修改,外键约束。永久存储支持崩溃后自动恢复
- myisam:表级锁同一时间仅一个用户修改并发写入受限,不支持事务无法回滚,读写高速。不支持崩溃自动恢复
- memory:数据存于内存读写快服务器重新后数据丢失,不支持事务无法回滚,低延迟。
- 主流引擎对比:
引擎 事务支持 崩溃恢复 适用场景 InnoDB ✓ ✓ 高并发事务处理 MyISAM ✗ ✗ 读密集型操作 Memory ✗ ✗ 临时数据/缓存 - 默认引擎:InnoDB(MySQL 5.5.5+)
- 存储层(File System Layer)
- 数据组织:
- 数据文件(.ibd):表空间存储实际数据
- 日志文件:redo/undo日志保障事务安全
- 存储单元:
- 表空间 → 段 → 区 → 页(16KB) → 行
- 页为最小I/O单位,B+树索引基于页管理
- 数据组织:
本文来自博客园,作者:zwjvzwj,转载请注明原文链接:https://www.cnblogs.com/zwjvzwj/p/18804365