当前位置: 首页 > news >正文

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

目录

  • 一、MySQL总体架构
  • 二、各层的作用
    • 1、连接层
    • 2、应用层
    • 3、存储引擎层

一、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的架构,包含内存结构和磁盘结构,敬请期待。
在这里插入图片描述

http://www.lryc.cn/news/448754.html

相关文章:

  • Git | Dockerized GitLab 安装使用(简单实操版)
  • SpringCloud简介 Ribbon Eureka 远程调用RestTemplate类 openfeign
  • 微信小程序开发系列之-微信小程序性能优化
  • 线程池面试集
  • 从密码学看盲拍合约:智能合约的隐私与安全新革命!
  • c++学习笔记(47)
  • 软件设计之SSM(1)
  • STM32F745IE 能进定时器中断,无法进主循环
  • 《凡人歌》中的IT职业启示录
  • go libreoffice word 转pdf
  • 打造双模兼容npm包:无缝支持require与import
  • 便捷将屏幕投射到安卓/iOS设备-屏幕投射到安卓/iOS设备,Windows/Mac电脑或智能电视上-供大家学习研究参考
  • yolox训练自己的数据集
  • Centos8.5.2111(1)之本地yum源搭建和docker部署与网络配置
  • 基于SSM+小程序的自习室选座与门禁管理系统(自习室1)(源码+sql脚本+视频导入教程+文档)
  • 支付宝远程收款api之小荷包跳转码
  • STM32 F1移植FATFS文件系统 USMART组件测试相关函数功能
  • YOLOv8改进 | 融合篇,YOLOv8主干网络替换为MobileNetV3+CA注意机制+添加小目标检测层(全网独家首发,实现极限涨点)
  • 深入探索机器学习中的目标分类算法
  • 一文上手SpringSecurity【七】
  • 深圳龙链科技:全球区块链开发先锋,领航Web3生态未来
  • 手写代码,利用 mnist 数据集测试对比 kan 和 cnn/mlp 的效果
  • 基于Java+SQL Server2008开发的(CS界面)个人财物管理系统
  • 15年408计算机网络
  • C++ const关键字
  • python爬虫案例——腾讯网新闻标题(异步加载网站数据抓取,post请求)(6)
  • LeetCode416:分割等和子集
  • 自定义异常注解处理框架
  • 【小程序】微信小程序课程 -3 快速上手之常用方法
  • iOS 小组件