第2章 MySQL架构
MySQL体系结构
1. MySQL整体架构
C/S架构模型
MySQL采用经典的客户端/服务器架构,客户端通过TCP/IP协议与服务器通信。服务器端接收客户端请求,处理后返回结果。
MySQL实例架构
MySQL实例由以下核心组件构成:mysqld主进程、主线程(Master Thread)、工作线程(IO/SQL/Purge等)以及预分配的内存结构。各组件协同工作,共同提供数据库服务。
mysqld程序分层原理
MySQL采用分层架构设计,主要分为Server层和Engine层。Server层类似Linux内核层,包含连接器、查询缓存、分析器、优化器、执行器等组件;Engine层类似文件系统,负责数据的实际存储和检索。
2. MySQL存储架构
逻辑架构
MySQL的逻辑结构设计借鉴了操作系统的文件管理思想。库对应目录,表对应文件,这种映射关系使得数据管理更加直观。正如Linux中一切皆文件,MySQL中一切皆表,一切操作通过SQL实现。
逻辑对象包含:
- 库:由库名和库属性(字符集、排序规则等)组成
- 表:由列(字段名、数据类型、约束)、行(实际数据记录)和表属性(存储引擎、字符集等)组成
物理架构
MySQL的物理存储采用分层结构,从逻辑操作到物理操作都保证尽可能的连续IO,提高性能。
存储层次结构:
- 段(segment):一个表对应一个段,由1到N个区构成
- 区(extent):又称簇,由64个连续页构成,默认大小1MB
- 页(page):MySQL最小IO单元,默认16KB,包含4个OS block
- OS block:文件系统块,默认4KB,包含8个扇区
- 扇区:磁盘最小物理单元,默认512字节
提示
理解MySQL的体系结构对于后续的性能优化、故障诊断至关重要。建议重点掌握Server层与Engine层的职责划分,以及物理存储的层次结构。