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

相关推荐
qq_1927798717 小时前
高级爬虫技巧:处理JavaScript渲染(Selenium)
jvm·数据库·python
u01092727118 小时前
使用Plotly创建交互式图表
jvm·数据库·python
爱学习的阿磊18 小时前
Python GUI开发:Tkinter入门教程
jvm·数据库·python
tudficdew18 小时前
实战:用Python分析某电商销售数据
jvm·数据库·python
Fleshy数模19 小时前
CentOS7 安装配置 MySQL5.7 完整教程(本地虚拟机学习版)
linux·mysql·centos
sjjhd65219 小时前
Python日志记录(Logging)最佳实践
jvm·数据库·python
Configure-Handler19 小时前
buildroot System configuration
java·服务器·数据库
2301_8213696119 小时前
用Python生成艺术:分形与算法绘图
jvm·数据库·python
az44yao19 小时前
mysql 创建事件 每天17点执行一个存储过程
mysql
电商API_1800790524720 小时前
第三方淘宝商品详情 API 全维度调用指南:从技术对接到生产落地
java·大数据·前端·数据库·人工智能·网络爬虫