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 内容刷新到磁盘中。

相关推荐
XDHCOM1 天前
ORA-32484重复列名错误,ORACLE数据库CYCLE子句故障修复与远程处理方案
数据库·oracle
翻斗包菜1 天前
PostgreSQL 日常维护完全指南:从基础操作到高级运维
运维·数据库·postgresql
呆瑜nuage1 天前
MySQL表约束详解:8大核心约束实战指南
数据库·mysql
liliangcsdn1 天前
Agent Memory智能体记忆系统的示例分析
数据库·人工智能·全文检索
那个失眠的夜1 天前
Mybatis延迟加载策略
xml·java·数据库·maven·mybatis
Rick19931 天前
SQL 执行流程
数据库·sql
M--Y1 天前
Redis常用数据类型
数据结构·数据库·redis
元宝骑士1 天前
FIND_IN_SET使用指南:场景、优缺点与MySQL优化策略
后端·mysql
猿小喵1 天前
MySQL慢查询分析与处理-第二篇
数据库·mysql·性能优化
Y001112361 天前
MySQL-进阶
开发语言·数据库·sql·mysql