一条sql在MySQL中是怎么执行的

一、MySQL总体架构

作为常问八股文,相信不少小伙伴当年都被问到过这个问题,回答这个问题我们首先得知道MySQL服务器基本架构,主要分为连接层,应用层和存储引擎层。如下:
MySQL总体架构


二、各层的作用

1、连接层

首先不同语言客户端通过连接器连接mysql,mysql会进行权限验证,连接限制,连接缓存,线程重用等等。

2、应用层

到达应用层时,会对执行的SQL进行分类,如果是查询语句会对语句进行解析,找到对应的表,要检索的字段和查询条件。

同时优化器会根据表是否有索引等制定执行计划检索数据,最后优先去缓存层中查询数据,缓存中没有则从磁盘读取。

该层主要包含SQL接口层,解析器,优化器,和缓存层,各层各司其职。

  • SQL Interace:区分DML、DDL、存储过程、视图、触发器等。
  • Parser(解析器):比如查询语句的翻译,查哪张表,查哪些字段,有哪些条件等。
  • Optimizer(优化器):走索引还是全表扫、多个表查询先查哪个表等。
  • Caches & Buffers(缓存层):查数据时先查缓存,若没有则从磁盘读取。

3、存储引擎层

当查询数据时,MySQL服务器会通过存储引擎检索数据,存储引擎决定数据怎么存储,以及具体如何从磁盘中查询数据。
在这里插入图片描述
上面的tb_user_copy表指定了存储引擎为CSV,关于存储引擎具体怎么存储数据,我们可以查看mysql数据目录下的存储信息,如下:
在这里插入图片描述

备注:可以看到在MySQL的数据目录下有名为tb_user_copy.CSV的文,不同存储引擎存储表数据的格式和结构都不同。

mysql中支持的存储引擎,可以通过命令检索,如下:

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

下节我们具体讲讲InnoDB的架构,包含内存结构和磁盘结构,敬请期待。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌波漫步&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值