MySQL是一个开源的关系型数据库管理系统(RDBMS) 它的整体架构可以分为以下几个主要组件和层级:
客户端层(Client Layer)
与 MySQL 交互的最顶层,如我们经常使用的 MySql 客户端工具,代表了客户端层。客户端通过 TCP/IP 协议与 MySQL 服务器进行通信,可以执行查询、更新数据等操作。 MySQL 还支持使用 socket 进行连接,不过一般使用较少。
连接池(Connection Pool)
MySQL 连接池位于客户端层和服务层之间,用于管理和维护 MySQL 服务器的连接。连接池可以提高性能,减少频繁建立和关闭连接的开销.
MySQL中--使用参数 max-connections 对线程的最大连接数量进行限制
相关命令
# 查询当前 DB 地最大连接数.
show variables like '%max_connections%';
# 修改数据库的最大连接数为指定值.
set GLOBAL max_connections = 200;
# 查看当前的连接数量.
show status like 'Threads%'
- Threads_cached:目前空闲的数据库连接数。
- Threads_connected:当前数据库存活的数据库连接数。
- Threads_created:MySQL-Server 运行至今,累计创建的连接数。
- Threads_running:目前正在执行的数据库连接数。
系统服务层(Server Layer)
服务层包括 MySQL 服务器的核心组件,主要负责处理 SQL 查询、事务管理、安全性等。其可以分为以下几个部分.
连接管理器(Connection Manager)
处理客户端的连接请求,验证用户身份,维护连接池,以及将请求传递给 SQL 处理器。
SQL处理器(SQL processor)
SQL处理器解析、优化和执行SQL查询。负责查询的执行计划生成,索引选择以及结果集的返回。
存储引擎借口(Storage Engine Interface)
存储引擎负责数据的存储和检索。MySQL支持多种存储引擎,包括 InnDB、MyISAM、Memory等。不同存储引擎有不同的特性和适用场景。 其中 InnoDB 存储引擎比较常用
存储层(Storage Layer)
存储层是 MySQL 的底层,负责实际的数据存储和管理。每一个存储引擎都有自己的文件格式和存储结构,因此存储层的工作方式会因存储引擎的不同而有所不同。
物理存储(Physical Storage)
实际存储数据的硬件设备,包括磁盘和内存。MySQL 将数据存储在磁盘上,通过内存进行缓存和高速访问.