InnoDB行格式:Compact、Redundant、Dynamic、Compressed

行格式概述 行格式(Row Format) 定义了一行数据在磁盘上的存储方式。 -- 查看表的行格式 SHOW TABLE STATUS LIKE 'users'\G -- Row_format: Dynamic -- 创建表时指定行格式 CREATE TABLE test ( id INT PRIMARY KEY, name VARCHAR(100) ) ROW_FORMAT=COMPACT; -- 修改行格式 ALTER TABLE test ROW_FORMAT=DYNAMIC; 四种行格式 行格式 MySQL版本 特点 适用场景 Redundant 5.0前默认 旧格式,占用空间大 兼容性 Compact 5.0-5.6默认 紧凑格式,节省20%空间 通用(已过时) Dynamic 5.7+默认 动态格式,处理行溢出 推荐(默认) Compressed 5.5+ 压缩格式,节省50%+空间 只读表、归档数据 1. Compact行格式(紧凑格式) 结构 ┌──────────────────────────────────────────────────┐ │ 变长字段长度列表(逆序) │ VARCHAR、TEXT字段的长度 ├──────────────────────────────────────────────────┤ │ NULL值列表(位图,逆序) │ 标记哪些字段为NULL ├──────────────────────────────────────────────────┤ │ 记录头信息(5字节) │ deleted_flag、min_rec_flag等 ├──────────────────────────────────────────────────┤ │ 隐藏列 │ DB_TRX_ID、DB_ROLL_PTR、DB_ROW_ID ├──────────────────────────────────────────────────┤ │ 列1数据 │ 实际数据 ├──────────────────────────────────────────────────┤ │ 列2数据 │ ├──────────────────────────────────────────────────┤ │ ... │ └──────────────────────────────────────────────────┘ 示例 CREATE TABLE user_compact ( id INT PRIMARY KEY, name VARCHAR(20), age INT, email VARCHAR(50) ) ROW_FORMAT=COMPACT; INSERT INTO user_compact VALUES (1, 'Alice', 25, 'alice@example.com'); 存储布局: ...

2025-01-15 · maneng

如约数科科技工作室

浙ICP备2025203501号

👀 本站总访问量 ...| 👤 访客数 ...| 📅 今日访问 ...