🔄Update: MySQL

This commit is contained in:
2025-09-25 20:14:36 +08:00
parent c4b62a4aa8
commit acf3132514
4 changed files with 115 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
# 执行一条 SQL 语句的过程
## 连接器
- 连接到服务(TCP)
- 验证用户身份
- 验证用户权限
## 解析器
- 词法分析
- 语法分析
## 预处理器
- 检查表以及字段
- 扩展 * 符号
## 优化器
- 决定使用的索引
## 执行器
- 与存储引擎交互
*三种交互*
- 主键索引
- 全表扫描
- 索引下推
+38
View File
@@ -0,0 +1,38 @@
# 存放文件
`InnoDB`
```text
|-- db.opt
| 默认字符集、字符校验规则
|-- t_order.frm
| 表结构
|-- t_order.ibd
| 表数据
```
- 字符集
- 表结构
- 表数据
# 表数据空间
![表空间](https://cdn.xiaolincoding.com/gh/xiaolincoder/mysql/row_format/%E8%A1%A8%E7%A9%BA%E9%97%B4%E7%BB%93%E6%9E%84.drawio.png)
- 行
- 页
- 读写单位
- 默认 16KB
- 区
- 段
# 行格式
- 变长字段长度列表
- NULL 列表
- 记录头
- 真实数据
- 隐藏字段
- row_id
- trx_id
- roll_pointer
+22
View File
@@ -0,0 +1,22 @@
# B+ Tree 索引
## 适用
- 主键索引
- 叶子结点存放具体数据
- 二级索引
- 叶子结点存放主键值
- 回表主键索引
## B+ vs B
- 基于范围
- 数据量小
## B+ vs 二叉
- 深度
## B+ vs Hash
- 等值查询
+24
View File
@@ -0,0 +1,24 @@
# 联合索引
- 二级索引的一种
## 最左匹配
有序 -> 匹配
## 范围查询
> Q: `select * from t_table where a > 1 and b = 2` 联合索引(a, b)哪一个字段用到了联合索引的 B+Tree?
- a
- 在符合 `a > 1` 条件的 `b` 中,字段值是无序的。
> Q: `select * from t_table where a >= 1 and b = 2` 联合索引(a, b)哪一个字段用到了联合索引的 B+Tree?
- a, b
- 因为能确定唯一起始点
## 索引下推
- 提前判断减少回表