01、图解分析
02、分析
网络连接层(客户端)
- 客户端连接器(Client Connetors):能够于MYSQL建立连接的客户端,目前几乎支持所有主流的服务端编程技术,比如常见的 java、Go、c及python等等。它们通过各自API技术与MYSQL建立连接。
服务层(MYSQL Server):
MySQL实例,真正提供数据存储和数据处理功能的MySQL服务器进程,主要包括系统管理和控制工具,连接池,SQL接口、解析器、查询优化器和缓存六个部分:
- 连接池(Connection Pool):负责存储和管理客户端与数据库的连接,一个线程负责管理一个链接。
- 系统管理和控制工具:(Management Services & utillities): 例如:数据库的备份、安全管理、集群管理等。
- SQL接口(SQL Interface):用于接收客户端发送的各种SQL命令,并且返回用户需要查询的结果,比如:DML、DDL、存储过程、视图、触发器等等。
- 解析器 (Parse):负责将请求的SQL解析生成一个“解析树”,然后根据一些MYSQL规则进一步检查是否合法。
-
查询优化器(Optimizer):当“解析树”通过解析器语法检查后,将交由优化器将其转化成可执行的计划,然后与存储引擎进行交互。
比如:select id,name from user where male = 1 。会经历:
选取 —-> 投影 —-> 连接策略
1、select会先根据where语句进行选取,并不是查询出全部数据在进行过滤。
2、selec查询根据id,name,age进行属性投影,并不是去取出所有的字段。
3、将两个查询条件连接起来最终生成查询结果,进行返回 - 缓存(Cache&Buffer):缓存机制是有一系列小缓存注册的。比如表缓存,记录缓存,权限缓存,引擎缓存等等。如果查询缓存有命中查询结果,查询语句就可以直接去查询缓存中取数据。
-
存储引擎(Storage Engines):CSV、Innodb、Memory、MyISAM、ARCHIVE、BLACKHOLE等。
存储引擎可以决定你你数据表存储文件的格式和压缩的方式
。性能和速度以及性能也存在差异。比如CSV。
03、存储引擎
存储引擎(Storage Engines):CSV、Innodb、Memory、MyISAM、ARCHIVE、BLACKHOLE等。
存储引擎可以决定你你数据表存储文件的格式和压缩的方式
。性能和速度以及性能也存在差异。比如CSV。
图解:
执行脚本
CREATE TABLE `kss_user` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`age` int(11) NOT NULL,
`createtime` datetime NOT NULL
) ENGINE=CSV DEFAULT CHARSET=utf8mb4
mysql> SHOW CREATE TABLE kss_user \G;
mysql> select * from kss_user;
+----+--------+-----+---------------------+
| id | name | age | createtime |
+----+--------+-----+---------------------+
| 4 | YYKK | 34 | 2021-05-26 15:14:04 |
| 3 | 阿超 | 16 | 2021-05-26 15:14:04 |
| 2 | 狂神 | 18 | 2021-05-26 15:14:04 |
| 1 | 飞哥 | 34 | 2021-05-26 15:14:04 |
+----+--------+-----+---------------------+
4 rows in set (0.00 sec)
mysql> select * from kss_user \G;
*************************** 1. row ***************************
id: 4
name: YYKK
age: 34
createtime: 2021-05-26 15:14:04
*************************** 2. row ***************************
id: 3
name: 阿超
age: 16
createtime: 2021-05-26 15:14:04
*************************** 3. row ***************************
id: 2
name: 狂神
age: 18
createtime: 2021-05-26 15:14:04
*************************** 4. row ***************************
id: 1
name: 飞哥
age: 34
查看存储引擎文件的命令
SHOW VARIABLES LIKE '%datadir%';
当前数据库存储表的目录是:
/www/server/data
,如果是正常安装的目录是:
/var/lib/mysql
。
底层的存储的数据格式是:kss_user.csv打开如下:
04、总结
存储引擎封装了对数据进行存储的相关实现,提供数据插入、删除、修改、读取等接口,提供给MySQL Server上层进行调用。
版权声明:本文为qq_32904533原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。