news 2026/3/23 16:03:58

MySQL从入门到精通系列:InnoDB记录存储结构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL从入门到精通系列:InnoDB记录存储结构

一:楔子

MySQL服务器当中用于对表数据进行操作的是存储引擎。 常用的存储引擎是InnoDB MyISAM MEMORY

MySQL默认的存储引擎是InnoDB。我们本系列文章,研究的也就是这个存储引擎。

二:页简介

InnoDB的数据存储到磁盘上。

真正处理数据的过程发生在内存中,所以需要把磁盘中的数据加载到内存中。如果是处理写入或修改请求,还需要把内存中的内容刷新到磁盘上

然而读写磁盘的速度非常慢,与读写内存差了几个数量级。存储引擎需要一条一条地把记录从磁盘上读出来么?不,那样会慢死。

InnoDB采取的方式是:将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位。InnoDB中页的大小一般为16KB。也就是在一般情况下,一次最少从磁盘中读取16KB的内容到内存中,一次最少把内存中的16KB内容刷新到磁盘中。

注意:

系统变量innodb_page_ size表明了InnoDB存储引擎中的页大小,默认值为16384(单位是字节),也就是16KB。

该变量只能在第一次初始化MySQL数据目录时指定,之后就再也不能更改了

服务器运行过程中不可以更改页面大小就好了

三:行格式

表中数据的单位是记录,记录有四种行格式:

compact、redundant、dynamic、compressed

1:指定行格式语法

# 建表时指定 CREATE TABLE `xxxxxxx` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id', `encrypted_data_key` varchar(1024) COLLATE utf8mb3_bin NOT NULL DEFAULT '' COMMENT '密钥', PRIMARY KEY (`id`), UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_bin ROW_FORMAT=compact # alter进行修改 alter table xxxxrow_format=conpact;

2:指定compact行格式

额外信息的作用

辅助管理、标记真实记录。


变长字段列表:

MySQL中有变长数据类型Varchar(M) Varbinary(M) Text BloBl类型。这种列数据存储内容长度是多少并不确定

存储行中包含这种列的时候,要存储真实值+内存长度(数据占用字节数)Compact格式中,一行中变长字段真实数据字节数,逆序存储在这个列表当中。按列顺序逆序排列。

Null值列表:

某些列是null值,

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/16 1:30:13

Apache SeaTunnel Zeta、Flink、Spark

本文档将深入解析 Apache SeaTunnel 支持的三大执行引擎:Zeta (SeaTunnel Engine)、Flink 和 Spark。我们将从架构设计、核心特性、优缺点对比以及使用方法等多个维度进行详细讲解,帮助你根据业务需求选择最合适的引擎。 1. 引擎概览 SeaTunnel 的架构…

作者头像 李华
网站建设 2026/3/15 16:21:22

大数据毕设项目推荐-基于Hadoop的篮球队球员数据分析系统某篮球队各个球员数据分析系统的设计与实现【附源码+文档,调试定制服务】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/3/18 4:00:24

jsp儿童物品置换网站tw726--(程序+源码+数据库+调试部署+开发环境)

本系统(程序源码数据库调试部署开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,卖家,物品分类,求购信息,物品信息,交易信息开题报告内容一、研究背景随着家庭对孩子成长的重视,儿童…

作者头像 李华
网站建设 2026/3/17 20:14:11

Redis跳表

作为Redis对象中特别重要的ZSet的底层实现原理,理解跳表特别重要。那么我们接下来来介绍一下跳表; 1.什么是跳表 跳表的本质还是链表,普通链表的结构如下所示: 这种结构虽然简单清晰,但是查询某个节点的效率比较低,而…

作者头像 李华