前言
我们都熟悉mysql数据库服务架构,也清楚SQL的执行顺序,Mysql的数据在磁盘和内存中的存储结构是采用B+树的数据结构,但是在InnoDB引擎中,数据在内存和磁盘中的展示形式以及怎么和Mysql的服务架构建立联系,SQL查询和InnoDB引擎之前的联系,可能就不是不清楚了。
Mysql的逻辑架构图如下所示:

InnoDB存储引擎结构
InnoDB存储引擎的逻辑存储结构是什么呢,其实所有的数据都被逻辑地放在了一个空间中这个空间中的文件就是实际存在的物理文件,即表空间。默认情况下,一个数据库表占用一个表空间,表空间中存放该表对应的数据、索引、insert buffer bitmap undo信息、insert buffer 索引页、double write buffer 等是放在共享表空间中的。
# 默认一个数据库表单独占有一个表空间
show variables like '%innodb_file_per_table%'
innodb_file_per_table=ON
# 修改设置
SET GLOBAL innodb_file_per_table=OFF; 1.2.3.4.5.
2.1、InnoDB表存储引擎文件

每个表空间由 段 segment 区 extent 页 page 组成。页是数据存储数据的基本单位,默认大小为 16kb。 区是由连续页组成的空间,默认大小为 1MB。多个区构成表的段。 InnoDB 逻辑存储结构
,则直接加载 extent 中剩余的数据页。
2.3、InnoDB 特性
2.3.1、插入缓存
插入缓冲(Insert Buffer/Change Buffer)为了提升插入性能,insert buffer 是

本文详细介绍了MySQL InnoDB存储引擎的内存结构,包括预读机制、插入缓存、二次写、自适应哈希索引和异步IO等特性。通过对InnoDB内存管理的理解,帮助读者掌握SQL执行逻辑,特别是数据页的读取、刷新和优化策略。
最低0.47元/天 解锁文章
919

被折叠的 条评论
为什么被折叠?



