MySQL-逻辑架构

MySQL是C/S架构,即Client/Server架构,服务器端程序使用的是mysqld

1.Connectors(客户端)

MySQL服务器之外的客户端程序,用于连接MySQL服务器。不同语言与SQL的交互.

常见的客户端程序有Native C API,JDBC,ODBC等,本质上还是在TCP连接上通过MySQL协议与MySQL进行交互。

2.MySQL内部架构(DBMS)

2.1 连接层

Connection Pool(连接池)

客户端访问MySQL服务器前,需要先建立TCP连接,三次握手建立成功之后,Connection Pool会查询用户名和密码是否一致以及权限表中是否有响应权限

2.2 服务层

SQL Interface:SQL接口,接收SQL指令,返回查询结果

Parser:解析器,语法解析和语义解析,生成语法树(分析你要做什么)

Optimizer:优化器,对SQL进行优化

Caches & Buffers:查询缓存,以key-value的方式缓存查询结果,MySQL8.0已经弃用

2.3 引擎层

插件式的存储引擎,与底层文件系统进行交互。

MySQL服务器上的存储引擎负责对表中数据进行读取和写入工作。不同的存储引擎中数据存放的格式是不同的,索引是在存储引擎中实现的。

MyIASM / InnoDB / Memory 等等….

MySQL8.0以后的默认存储引擎是InnoDB

1
2
3
4
5
6
7
8
9
mysql> show create table tb_user1 \G;
*************************** 1. row ***************************
Table: tb_user1
Create Table: CREATE TABLE `tb_user1` (
`id` int DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
`age` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

也可以显式地指明表的存储引擎

1
2
3
4
5
6
7
8
9
10
11
12
mysql> create table tb_user3(
> id int
> ) engine=MyISAM;
Query OK, 0 rows affected (0.01 sec)

mysql> show create table tb_user3 \G;
*************************** 1. row ***************************
Table: tb_user3
Create Table: CREATE TABLE `tb_user3` (
`id` int DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

2.3.1 InnoDB

5.5版本之后默认采用的引擎

  • 具备外键支持功能的事务存储引擎。
  • InnoDB是MySQL的默认事务型引擎,它被用来处理大量的短期事务,确保事务的完整性提交和回滚
  • 除了insert和select之外,还需要update、delete操作时选它
  • InnoDB是为处理巨大数据量的性能设计

缺点:1.写的处理效率差,2.对内存要求高

2.3.2 MyISAM

不支持事务,行级锁,外键。

优点:访问速度快,主要是读为主的应用

对比

3.存储层(磁盘)

File system:将需要的内容加载到内存中

日志文件

4.SQL执行流程


MySQL-逻辑架构
https://vickkkyz.fun/2022/03/24/计算机/mysql/逻辑架构/
作者
Vickkkyz
发布于
2022年3月24日
许可协议