MST

星途 面试题库

面试题:MySQL中InnoDB行记录格式有哪几种,各自特点是什么

请简要阐述MySQL的InnoDB存储引擎中,常见的行记录格式(如Compact、Redundant等)各自的特点及适用场景。
39.7万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

Compact格式

  • 特点
    • 存储紧凑:设计目的在于尽可能减少存储空间的占用,对变长字段采用更高效的存储方式。比如 VARCHAR 类型数据,只存储实际数据长度而非固定长度,节省空间。
    • 首部信息优化:记录头信息固定为 5 字节,包含众多状态和控制信息,如删除标记、记录类型等,以紧凑二进制位方式存储,提高存储效率。
    • 溢出页处理:对于过长的字段,部分数据会被存储到溢出页,原记录处仅保留 20 字节指针指向溢出页数据,解决大字段存储问题。
  • 适用场景:适用于存储空间相对紧张,对数据存储密度要求较高的场景。例如日志记录系统、数据仓库中的一些历史数据存储表,这类系统中数据量庞大,对空间利用率要求高,Compact 格式能有效降低存储成本。

Redundant格式

  • 特点
    • 兼容性好:是早期 InnoDB 存储引擎使用的行记录格式,主要用于兼容旧版本的数据库系统,在老版本 MySQL 中广泛应用。
    • 存储结构相对简单:相比 Compact 格式,其记录头信息和数据存储方式相对直观,但不够紧凑,会占用更多存储空间。例如对于变长字段,它采用的长度表示方式可能不如 Compact 高效。
  • 适用场景:一般用于需要与旧版本 MySQL 数据库进行交互,或在升级数据库存在困难时,确保数据能够正常读写的场景。比如一些遗留系统,由于业务原因暂时无法升级数据库版本,只能继续使用 Redundant 格式。