MySQL概述
基础篇
通用语法及分类
DCL
DQL
DML
DDL
函数
字符串函数
数值函数
日期函数
流程函数
约束
常用约束
外键约束
多表查询
多表关系
查询
内连接查询
外连接查询
自连接查询
联合查询
子查询
事务
进阶篇
存储引擎
性能分析
查看执行频次
慢查询日志
profile
explain
索引
索引结构
索引分类
语法
使用规则
设计原则
SQL 优化
插入数据
主键优化
order by优化
group by优化
limit优化
count优化
update优化(避免行锁升级为表锁)
视图
存储过程
触发器
锁
InnoDB 引擎
事务原理
MVCC
数据类型
权限一览表
图形化界面工具
InnoDB 引擎 - MySql学习文档 - 笔下光年
网站首页
InnoDB 引擎
### 逻辑存储结构 表空间(ibd文件),一个mysql实例可以对应多个表空间,用于存储记录、索引等数据。 段,分为数据段(Leaf node segment)、索引段(Non-leaf node segment)、回滚段(Rollback segment),InnoDB是索引组织表,数据段就是B+树的叶子节点,索引段即为B+树的非叶子节点。段用来管理多个Extent(区)。 区,表空间的单元结构,每个区的大小为1M。默认情况下,InnoDB存储引擎页大小为16K,即一个区中一共有64个连续的页。 页,是InnoDB存储引擎磁盘管理的最小单元,每个页的大小默认为16KB。为了保证页的连续性,InnoDB存储引擎每从磁盘申请4-5个区。一页包含若干行。 行,InnoDB存储引擎数据是按进行存放的。 ### 架构 ![images](https://github.com/Buildings-Lei/mysql_note/blob/main/images/artic.png ) Buffer Pool:缓冲池是主内存中的一个区域,里面可以缓存磁盘上经常操作的真实数据,在执行增删改查操作时,先操作缓冲池中的数据(若缓冲池没有数据,则从磁盘加载并缓存),然后再以一定频率刷新到磁盘,从而减少磁盘I0,加快处理速度。 ![images](https://github.com/Buildings-Lei/mysql_note/blob/main/images/artic2.png ) ![images](https://github.com/Buildings-Lei/mysql_note/blob/main/images/artic3.png ) ![images](https://github.com/Buildings-Lei/mysql_note/blob/main/images/artic4.png ) ![images](https://github.com/Buildings-Lei/mysql_note/blob/main/images/artic5.png ) 磁盘架构: ![images](https://github.com/Buildings-Lei/mysql_note/blob/main/images/artic6.png ) ![images](https://github.com/Buildings-Lei/mysql_note/blob/main/images/artic7.png ) ![images](https://github.com/Buildings-Lei/mysql_note/blob/main/images/artic8.png ) InnoDB的整个体系结构为: 当业务操作的时候直接操作的是内存缓冲区,如果缓冲区当中没有数据,则会从磁盘中加载到缓冲区,增删改查都是在缓冲区的,后台线程以一定的速率刷新到磁盘。
上一篇:
锁
下一篇:
事务原理