1.1 架构演变
不同并发访问量和数据量级别下的架构演变过程:
架构V1.0 - 单机单库 —>架构V2.0 - 主从架构—>架构V3.0 - 分库分表—>架构V4.0 - 云数据库
- 单库
优点:简单易于维护
缺点:数据量瓶颈,读写压力大,可用性差
- 主从
优点:高可用,缓解读写压力
缺点:写压力,数据容量有限
- 分库分表
优点:高可用,并发程度高
缺点:数据一致性问题,维护成本高
1.2 体系架构
体系架构大致分为网络连接层、服务层、存储引擎层和系统文件层。
一、网络连接层
客户端连接器(Client Connectors):提供与MySQL服务器建立的支持。目前几乎支持所有主流
的服务端编程技术,例如常见的 Java、C、Python、.NET等,它们通过各自API技术与MySQL建立连接。
二、服务层(MySQL Server)
服务层是MySQL Server的核心,主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和缓存六个部分。
- 系统管理和控制工具(Management Services & Utilities):例如备份恢复、安全管理、集群管理等。
- 连接池(Connection Pool):负责存储和管理客户端与数据库的连接,一个线程负责管理一个连接。维护管理连接:
- SQL接口(SQL Interface):用于接收客户端发送的各种SQL命令,并且返回用户需要的查询结果。比如DML、 DDL 、存储过程、 视图、 触发器等;
- 解析器(Parser):负责将请求的SQL解析成一个“解析树”,根据规则进一步检查解析树合法性。
- 查询优化器(Optimizer):当解析树通过语法检查后,将交由优化器将其转化为执行计划,然后与存储引擎交互。
- 缓存(Cache & Buffer):缓存机制是由一系列小缓存组成。比如表缓存,记录缓存,权限缓存,引擎缓存等。如果查询语句有命中的结果,则直接在查询缓冲中取数据
三、存储引擎层(Pluggable Storage Engines)
负责MySQL中的数据存储和提取,与底层系统文件交互。是插件式的,服务器中的查询执行引擎通过接口和存储引擎进项通信,接口屏蔽了不同存储引擎的差异。
四、系统文件层(File System)
负责将数据库的数据和日志存储在文件系统中,并完成与存储引擎的交互,是文件的物理存储层。主要包括日志文件,数据文件,配置文件,pid文件,socket文件等。
1.3 运行机制
①建立连接(Connectors&Connection Pool)通过客户端/服务器通信协议与MySQL建立连接。MySQL 客户端与服务端的通信方式是 “ 半双工 ”。对于每一个 MySQL 的连接,时刻都有一个线程状态来标识这个连接正在做什么。
②查询缓存(Cache&Buffer)这是MySQL的一个可优化查询的地方,如果开启了查询缓存且在查询缓存过程中查询到完全相同的SQL语句&#