mysql原理--补充 1.InnoDB 行格式有哪些InnoDB 提供了 4 种行格式分别是 Redundant、Compact、Dynamic和 Compressed 行格式。Redundant基本废弃Compact紧凑格式Dynamic和 Compressed 类似Compact2.COMPACT 行格式长什么样记录的额外信息1. 变长字段长度列表举例现在 t_user 表里有这三条记录先来看第一条记录name 列的值为 a真实数据占用的字节数是 1 字节十六进制 0x01phone 列的值为 123真实数据占用的字节数是 3 字节十六进制 0x03age 列和 id 列不是变长字段所以这里不用管。这些变长字段的真实数据占用的字节数会按照列的顺序逆序存放所以「变长字段长度列表」里的内容是「 03 01」而不是 「01 03」。同样的道理我们也可以得出第二条记录的行格式中「变长字段长度列表」里的内容是「 04 02」如下图第三条记录中 phone 列的值是 NULLNULL 是不会存放在行格式中记录的真实数据部分里的每个变长字段的「变长字段长度」需要用多少字节表示具体情况分为如果变长字段允许存储的最大字节数小于等于 255 字节就会用 1 字节表示「变长字段长度」如果变长字段允许存储的最大字节数大于 255 字节就会用 2 字节表示「变长字段长度」为什么「变长字段长度列表」的信息要按照逆序存放「记录头信息」中指向下一个记录的指针指向的是下一条记录的「记录头信息」和「真实数据」之间的位置这样的好处是向左读就是记录头信息向右读就是真实数据比较方便。「变长字段长度列表」中的信息之所以要逆序存放是因为这样可以尽量使得位置靠前的字段的真实数据和数据对应的字段长度信息可以同时在一个 CPU Cache Line 中同样的道理 NULL 值列表的信息也需要逆序存放。每个数据库表的行格式都有「变长字段字节数列表」吗「变长字段长度列表」只出现在数据表有变长字段的时候。2. NULL 值列表如果存在允许 NULL 值的列则每个列对应一个二进制位bit二进制位按照列的顺序逆序排列。二进制位的值为1时代表该列的值为NULL。二进制位的值为0时代表该列的值不为NULL。另外NULL 值列表必须用整数个字节的位表示1字节8位先来看第一条记录第一条记录所有列都有值不存在 NULL 值:但是 InnoDB 是用整数字节的二进制位来表示 NULL 值列表的现在不足 8 位所以要在高位补 0所以对于第一条数据NULL 值列表用十六进制表示是 0x00。接下来看第二条记录最后第三条记录每个数据库表的行格式都有「NULL 值列表」吗当数据表的字段都定义成 NOT NULL 的时候这时候表里的行格式就不会有 NULL 值列表了。3. 记录头信息记录头信息中包含的内容很多我就不一一列举了这里说几个比较重要的delete_mask 标识此条数据是否被删除。ext_record下一条记录的位置。从这里可以知道记录与记录之间是通过链表组织的。record_type表示当前记录的类型0表示普通记录1表示B树非叶子节点记录2表示最小记录3表示最大记录记录的真实数据记录真实数据部分除了我们定义的字段还有三个隐藏字段分别为row_id、trx_id、roll_pointer我们来看下这三个字段是什么。row_id如果我们建表的时候指定了主键或者唯一约束列那么就没有 row_id 隐藏字段了。如果既没有指定主键又没有唯一约束那么 InnoDB 就会为记录添加 row_id 隐藏字段。row_id不是必需的占用 6 个字节。trx_id事务id表示这个数据是由哪个事务生成的。 trx_id是必需的占用 6 个字节。roll_pointer这条记录上一个版本的指针。roll_pointer 是必需的占用 7 个字节。

相关新闻

最新新闻

单片机/C/C++八股:(三十)UART 专题 ---- 下集

单片机/C/C++八股:(三十)UART 专题 ---- 下集

上一篇下一篇UART 专题 ---- 上集目 录5)UART 的轮询/中断/DMA 接收方式对比6)UART 的环形缓冲区7)UART、RS-232、RS-485 的关联与区别8)USB 转 TTL 模块的 VCC & TX8.1)VCC 接不接8.2)TX 电压倒灌9&am…

2026/7/23 7:59:16
Checkra1n越狱工具在Windows平台的实现与A12设备支持进展

Checkra1n越狱工具在Windows平台的实现与A12设备支持进展

1. Checkra1n越狱工具概述Checkra1n是一款基于checkm8漏洞开发的iOS越狱工具,其独特之处在于利用了苹果A5至A11芯片组BootROM中的永久性漏洞。与传统的越狱工具不同,Checkra1n不依赖系统级漏洞,因此理论上支持从iOS 12到最新版本的系统越狱&a…

2026/7/23 7:59:16
Service Worker 缓存策略:从预缓存到运行时缓存的精细控制

Service Worker 缓存策略:从预缓存到运行时缓存的精细控制

Service Worker 缓存策略:从预缓存到运行时缓存的精细控制 一、你的 PWA 离线了,但用户打开的是一个 3 天前的旧页面 Service Worker 缓存是 PWA 的核心能力,也是最容易被错误配置导致"永远显示旧内容"的地方。最常见的问题&#x…

2026/7/23 7:59:16
生成音乐的谱面可视化:从 MIDI 到标准五线谱的自动转换

生成音乐的谱面可视化:从 MIDI 到标准五线谱的自动转换

生成音乐的谱面可视化:从 MIDI 到标准五线谱的自动转换 一、AI 生成的 MIDI 是一堆数字,而音乐人要的是五线谱 AI 音乐生成模型输出的是 MIDI 数据——一串音符的开始时间、结束时间、音高、力度。这些数字对算法是完美的,但对音乐人是不可读…

2026/7/23 7:59:16
计算机视觉中的图片处理自动化技术解析

计算机视觉中的图片处理自动化技术解析

1. 项目概述:图片处理自动化技术栈解析在计算机视觉工程实践中,我们经常面临这样的困境:标注1000张车辆图片需要3人团队工作一周,而算法工程师等待数据的时间占项目周期的40%。更棘手的是,单一背景的样本导致模型在复杂…

2026/7/23 7:59:16
粉笔公考模考大赛含金量?对比华图中公模考

粉笔公考模考大赛含金量?对比华图中公模考

引言:公考备考中"模考"环节的定位 每年国考、省考报名人数动辄数百万,进面分数线逐年抬升,"裸考上岸"在多数岗位已不具现实可行性。在笔试备考的冲刺阶段,参加模考几乎是所有高分考生共同的备考动作。模考的功…

2026/7/23 7:54:16

月新闻