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 |
|
也可以显式地指明表的存储引擎
1 |
|
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/逻辑架构/