MySQL(1)基础篇

执行一条 select 语句,期间发生了什么? | 小林coding

目录

1、连接MySQL服务器

2、查询缓存

3、解析SQL语句

4、执行SQL语句

5、MySQL一行记录的存储结构


  • Server 层负责建立连接、分析和执行 SQL
  • 存储引擎层负责数据的存储和提取。支持InnoDB、MyISAM、Memory 等多个存储引擎,不同的存储引擎共用一个 Server 层。最常用的存储引擎是 InnoDB,我们常说的索引数据结构,就是由存储引擎层实现的,不同的存储引擎支持的索引类型也不相同,比如InnoDB 支持索引类型是 B+树

1、连接MySQL服务器

2、查询缓存

3、解析SQL语句

在正式执行 SQL 查询语句之前, MySQL 会先对 SQL语句做解析,这个工作交由「解析器」来完成。

如果我们输入的 SQL语句语法不对,就会在解析器这个阶段报错。比如,查询语句把 from写成了 form,这时 MySQL 解析器就会给报错。但是注意,表不存在或者字段不存在,并不是在解析器里做的。

4、执行SQL语句

5、MySQL一行记录的存储结构

MySQL 存储的行为是由存储引擎实现的,MySQL支持多种存储引擎,不同的存储引擎保存文件的方式自然也不同。InnoDB 是我们常用的存储引擎,也是 MySQL默认的存储引擎。所以,本文主要以 InnoDB 存储引擎展开讨论。

数据库表中的记录都是按行(row)进行存放的,每行记录根据不同的行格式,有不同的存储结构。记录是按照行来存储的,但是数据库的读取并不以「行」为单位,否则一次读取(一次 I/O 操作)只能处理一行数据,效率会非常低。因此,InnoDB 的数据是按「页」为单位来读写的 ,也就是说,当需要读一条记录的时候,并不是将这个行记录从磁盘读出来,而是以页为单位,将其整体读入内存。默认每个页的大小为 16KB,也就是最多能保证 16KB 的连续存储空间。页是 InnoDB 存储引擎磁盘管理的最小单元,意味着数据库每次读写都是以 16KB 为单位的,一次最少从磁盘中读取 16K 的内容到内存中,一次最少把内存中的 16K 内容刷新到磁盘中。

相关推荐
Flying pigs~~6 小时前
RAG智慧问答项目
数据库·人工智能·缓存·微调·知识库·rag
misL NITL6 小时前
mysql之如何获知版本
数据库·mysql
许彰午7 小时前
CacheSQL(二):主从复制——OpLog 环形缓冲区与故障自动恢复
java·数据库·缓存
2401_832365527 小时前
JavaScript中rest参数(...args)取代arguments的优势
jvm·数据库·python
2301_779622418 小时前
Go语言怎么用信号量控制并发_Go语言semaphore信号量教程【入门】
jvm·数据库·python
2301_766283448 小时前
c++如何将控制台输出保存到文件_cout重定向到txt【详解】
jvm·数据库·python
北极的冰箱8 小时前
MySQL Ver 8.0.41 for macos14.7密码遗忘
数据库·mysql
XDH_CS9 小时前
MySQL 8.0 安装与 MySQL Workbench 使用全流程(超详细教程)
开发语言·数据库·mysql
秋99 小时前
MySQL 8.0.46 全平台安装与配置详解(Windows/Linux/macOS)
linux·windows·mysql
treacle田9 小时前
达梦数据库-统计信息收集-记录
数据库·达梦数据库统计信息收集