✅MySQL的InnoDB存储引擎支持哪几种行格式?

数据库表中的行格式决定了数据在物理存储时的布局方式,进而对查询和DML操作的性能产生影响。

在InnoDB存储引擎中,常见的行格式主要包括以下四种:

  1. COMPACT:在MySQL 5.0之前是默认的格式,除了存储字段值外,还会利用空值列表来保存null值,同时记录变长字段长度列表和记录头信息。

COMPACT适用于处理大量包含可变长度列(如VARCHAR、VARBINARY、BLOB和TEXT类型)数据。

对于可变长度列,前768字节的数据存储在B树节点的索引记录中,超出部分存储在溢出页中。大于或等于768字节的固定长度列会被编码为可变长度列,可以存储在页外。

  1. REDUNDANT:在MySQL 5.0版本之前,InnoDB使用的行记录存储方式,较少使用。Redundant 行格式会将该记录中所有列(包括隐藏列)的长度信息存储在"字段长度偏移列表"中。
  1. DYNAMIC:MySQL 5.7版本引入的DYNAMIC格式是COMPACT格式的升级版本。它延续了COMPACT格式的优势,在处理大型可变长度列时更具灵活性,能够灵活选择将数据存储在页内还是页外。DYNAMIC格式适用于多数应用场景,在存储空间和性能之间取得了一定的平衡。其结构与COMPACT格式大致相似;

  2. COMPRESSED:作为MySQL 5.1中InnoDB的新增特性之一,压缩功能能够减小数据在磁盘上的占用空间。然而,其缺点在于增加了CPU的负担,可能导致部分查询性能下降。COMPRESSED行格式在DYNAMIC行格式的基础上引入了页外压缩功能。在存储数据时,如果发现可以通过压缩来减小存储空间,系统将选择压缩方式来存储数据。在查询时,数据将会被自动解压并返回结果。

  3. BARRACUDA:作为MySQL 5.7引进的一种新格式,相较于前述格式,支持更多高级特性,包括动态行格式、逐行压缩以及空间管理等功能。

对比:

行格式 紧凑的存储特性 增强的可变长度列存储 大索引键前缀支持 压缩支持 支持的表空间类型 所需文件格式
REDUNDANT system, file-per-table, general Antelope or Barracuda
COMPACT system, file-per-table, general Antelope or Barracuda
DYNAMIC system, file-per-table, general Barracuda
COMPRESSED file-per-table, general Barracuda

如有问题,欢迎加微信交流:w714771310,备注- 技术交流 。或微信搜索【码上遇见你】。

免费的Chat GPT可微信搜索【AI贝塔】进行体验,无限使用。

好了,本章节到此告一段落。希望对你有所帮助,祝学习顺利。

相关推荐
小码哥_常几秒前
一文搞懂双Token、SSO与第三方权限打通,附实战代码
后端
鱼骨不是鱼翅几秒前
个人简历面试复习-----测试理论篇(一)
面试·职场和发展
SimonKing3 分钟前
5分钟学会!把代码从本地推送到 GitHub,就是这么简单
java·后端·程序员
灵境空间7 分钟前
企业微信 AI 机器人 PHP SDK —— 免回调地址,三行代码接入,支持流式回复
后端
陈随易13 分钟前
Vite 8正式发布,内置devtool,Wasm SSR 支持
前端·后端·程序员
熊文豪14 分钟前
MySQL迁移的“隐形坑”与电科金仓的“零改造”破局之道
数据库·mysql
CodeSheep21 分钟前
首个OpenClaw龙虾大模型排行榜来了,国产AI霸榜了!
前端·后端·程序员
Java练习两年半22 分钟前
互联网大厂 Java 求职面试:技术栈与微服务深度解析
java·微服务·面试·技术栈
Moment23 分钟前
想转 AI 全栈?这些 Agent 开发面试题你能答出来吗
前端·后端·面试
czlczl200209251 小时前
Mysql的多版本快照MVCC机制与Mysql四种隔离级别
数据库·mysql