MySQL逻辑结构分为功能职责和数据组织两维:功能上含连接层、服务层、存储引擎层;数据组织上为库→表→列→行→索引,体现抽象分层与数据建模关系。

MySQL 的逻辑结构不是指物理文件或磁盘布局,而是从功能职责和数据组织方式两个维度对系统进行的抽象分层。它主要解决“谁负责什么”和“数据怎么组织”这两个核心问题。
一、按功能职责划分:三层逻辑架构
这是最常被提及的逻辑分层,体现 MySQL 内部各组件的协作关系:
- 连接层(Client Connection Layer):负责 TCP 连接建立、用户身份认证、权限校验与线程分配。每个成功连接会绑定一个服务线程,并缓存权限信息供后续 SQL 执行时快速判断。
- 服务层(SQL Layer / Server Layer):包含解析器(Parser)、优化器(Optimizer)、执行器(Executor)、查询缓存(Query Cache,MySQL 8.0 已移除)、内置函数、存储过程、视图、触发器等。它不直接操作数据文件,只生成执行计划并调用存储引擎接口。
- 存储引擎层(Storage Engine Layer):真正负责数据读写、索引管理、事务控制(如 InnoDB)或表锁(如 MyISAM)。不同引擎互不通信,仅响应上层指令。InnoDB 是当前默认且主流引擎,MyISAM 已逐步淘汰。
二、按数据组织方式划分:库→表→列→行→索引
这是面向开发者和 DBA 的数据建模视角,描述数据如何被定义和存放:
- 数据库(Database):逻辑容器,对应文件系统中一个目录(如 /var/lib/mysql/mydb),用于隔离不同业务的数据空间。
- 表(Table):由行和列构成的二维结构,是数据存储的基本单元。InnoDB 表默认以独立表空间(.ibd 文件)或系统表空间(ibdata1)形式存在;MyISAM 则拆为 .frm(结构)、.MYD(数据)、.MYI(索引)三个文件。
- 列(Column):定义字段名、数据类型、是否允许 NULL、默认值、字符集与排序规则等元信息。
- 行(Row):一条记录,实际存储在页(Page,通常 16KB)中。InnoDB 行格式含隐藏字段(如 trx_id、roll_pointer),支撑 MVCC 和事务回滚。
- 索引(Index):B-Tree 为主(主键聚簇索引 + 二级索引),也支持全文(FULLTEXT)、空间(R-Tree)等。索引结构由存储引擎实现,不跨引擎通用。
三、补充说明:逻辑 vs 物理的常见混淆点
逻辑结构不等于物理存储,但两者紧密关联:
- 一个“逻辑库”可能映射到多个物理实例(如分库分表场景),也可能一个实例承载多个逻辑库;
- “逻辑表”可以是真实表,也可以是视图(VIEW)或联邦表(FEDERATED),甚至跨库聚合的逻辑抽象;
- InnoDB 的“表空间(Tablespace)”是逻辑概念,但实际对应一个或多个物理文件;而“区(Extent)”“页(Page)”“行(Record)”属于更底层的逻辑存储单位,用于管理磁盘空间分配。










