MySQL逻辑架构
MySQL是一个快速、可扩展、易于使用的关系型数据库管理系统,属于Oracle公司旗下产品。
MySQL在2000年作为开源项目发布,采用GNU通用公共许可(GPL)协议,支持Windows、Linux、MacOS等多种操作系统。
MySQL使用结构化查询语言,可用于操作、管理和检索数据。
MySQL由瑞典公司MySQL AB开发和支持,使用C和C++编程语言编写。
MySQL由Michael Widenius和David Hughes开发的。人们常说MySQL是以联合创始人MIchael Widenius的女儿的名字命名的,她的名字叫"My"。
MySQL在全球流行的原因有很多,其中一个主要原因是它的逻辑架构。
整体说明
MySQL逻辑架构描述了MySQL系统中各个组件之间的关系。
MySQL遵循CS架构。作为客户端的用户可以使用各种网络访问作为服务端的Mysql系统资源。
MySQL的逻辑架构包含以下三部分:
- client层
- server层
- 存储引擎层
Client层
客户端在client层的帮助下向server层发出请求指令。客户端通过命令提示符或通过GUI屏幕输入有效的MySQL命令和表达式向server层发出请求。
如果表达式和命令有效,则在屏幕上获得响应输出。client层主要功能包括:
连接处理
当客户端向服务器发送请求,服务器接受请求,并与客户端建立连接.
身份验证
当客户端连接到MySQL服务器时,在服务器端进行认证。身份验证是在用户名和密码的帮助下完成的。
权限校验
当客户端成功连接到MySQL服务器后,服务器将检查特定客户端是否具有对MySQL服务器发出某些查询的权限。
Server层
MySQL架构的第二层,负责MySQL关系型数据库管理系统的所有逻辑功能。MySQL系统的这一层也被称为"MySQL架构的大脑"。
当客户端向服务器发出请求指令并且服务器在指令匹配时立即给出输出。Server层主要功能包括:
MySQL服务和实用程序
MySQL提供了广泛的服务和实用程序。这是MySQL流行的主要原因之一。
- Backup & recovery.
- Security.
- Replication.
- Cluster.
- Partitioning.
- Workbench.
SQL接口
结构化查询语言(SQL)是MySQL客户端和服务器之间交互的工具。下面给出了一些SQL接口组件。
- 数据操作语言(DML)
- 数据定义语言(DDL)
- 存储过程
- 视图
- 触发器
分析器
执行语法分析、语义分析,然后生成解析树作为输出。
- 语法分析主要功能是识别表名、字段等;
- 语义分析主要分析是否符合MySQL 语法规则;
优化器
一旦分析器分析完毕,优化器就会应用各种类型的技术进行优化。
这些技术包括重写查询、确定扫描表的顺序和选择要使用的正确索引。
查询缓存
MySQL查询缓存存储SELECT语句的完整结果集。
在解析查询之前,MySQL服务器会先查询查询缓存。
如果客户端发出查询请求且命中查询缓存,服务器会跳过分析、优化、执行,直接返回缓存中的数据。
查询缓存是以key-value形式存储。
不建议使用查询缓存、弊大于利,一旦表有更新,缓存就清空,一般情况命中率会比较低,适合更新少的静态表,如系统配置表。
这里补充说明下:MySQL 8.0 版本开始已删除该功能
存储引擎层
可插拔的存储引擎特性使MySQL成为大多数开发人员的首选。由于这一特性,MYSQL被广泛使用。
MySQL允许我们针对不同的情况和需求选择多种存储引擎。如InnoDB、MyISAM、CSV、Memory、Archive等。
MySQL支持在表级别下使用各种存储引擎。一个数据库可以包含具有多个存储引擎的表。