MYSQL运行原理

01、图解分析

img

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。

图解:

img

执行脚本

 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打开如下:

img

img

04、总结

存储引擎封装了对数据进行存储的相关实现,提供数据插入、删除、修改、读取等接口,提供给MySQL Server上层进行调用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值