news 2026/6/15 20:27:55

MySQL单行数据最大可以存储多少?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL单行数据最大可以存储多少?

MySQL 单行数据的最大存储限制,并非一个固定值,而是由存储引擎、页大小、行格式、列类型共同决定的动态上限。


一、InnoDB 行大小硬限制

1.官方文档定义
  • 最大行大小略小于 16KB 的页大小(默认 16,384 字节)
  • 实际可用空间
    ≈ 8,000 字节(因页头/尾、系统列、预留空间占用)

关键公式
有效行大小 ≤ 16,384 - 页开销(~200B) - 系统列(13B) - 预留空间(~7,000B)

2.为什么不是 16KB?
  • 页结构开销
    • 页头/尾:约 120 字节
    • 事务ID + 回滚指针:13 字节
    • NULL 位图(列数+7)/8字节
    • 变长字段长度列表:1~2 字节/字段
  • 预留空间
    InnoDB 为行更新预留约 50% 页空间(防页分裂)

⚠️实测上限
单行总数据(不含溢出)≤ 7,950 字节(MySQL 8.0)


二、突破限制:溢出页(Off-page Storage)

当行数据超过阈值,InnoDB 自动将大字段存入溢出页(Overflow Pages)

列类型溢出阈值存储方式
TEXT/BLOB> 768 字节主键页存 20 字节指针,数据存独立页
VARCHAR> 768 字节同 TEXT
JSON总大小 > 768 字节同 TEXT

效果
逻辑行大小无硬上限(受限于innodb_page_size和磁盘空间)

示例:
CREATETABLEt(idINTPRIMARYKEY,contentLONGTEXT-- 可存 4GB 数据);
  • 主键页:仅存id+ 20 字节指针
  • 溢出页content数据分散在多个 16KB 页中

三、各列类型的存储上限

类型最大值磁盘占用
TINYINT1 字节1B
INT4 字节4B
BIGINT8 字节8B
VARCHAR(N)65,535 字节实际长度 + 1~2B 长度前缀
TEXT65,535 字节同 VARCHAR
MEDIUMTEXT16MB指针 + 溢出页
LONGTEXT4GB指针 + 溢出页
JSON≈ 1GB以 TEXT 形式存储

⚠️注意
所有列总和 ≤ 65,535 字节(MySQL 行格式限制,非 InnoDB)


四、行格式(ROW_FORMAT)的影响

格式溢出策略适用场景
COMPACT> 768 字节溢出旧版本兼容
DYNAMIC所有大字段直接溢出推荐!减少主键页碎片
REDUNDANT已废弃

最佳实践

CREATETABLEt(...)ROW_FORMAT=DYNAMIC;

五、极端情况测试

1.最大单行(无溢出)
-- 创建接近 8KB 的行CREATETABLEmax_row(c1VARCHAR(7000),c2VARCHAR(900))ROW_FORMAT=DYNAMIC;
  • 插入INSERT INTO max_row VALUES (REPEAT('a',7000), REPEAT('b',900));
  • 结果:成功(总 ≈ 7,900B)
2.最大单行(含溢出)
-- 存储 1GB JSONCREATETABLEhuge_json(idINTPRIMARYKEY,dataJSON)ROW_FORMAT=DYNAMIC;INSERTINTOhuge_jsonVALUES(1,LOAD_FILE('/path/to/1gb.json'));
  • 结果:成功(主键页仅存指针)

六、生产建议

  1. 避免宽表

    • 单行 > 4KB 会降低 Buffer Pool 效率
    • 将大字段拆到单独表
  2. 强制 DYNAMIC 格式

    SETGLOBALinnodb_file_format=Barracuda;SETGLOBALinnodb_file_per_table=ON;CREATETABLEt(...)ROW_FORMAT=DYNAMIC;
  3. 监控溢出页

    -- 查看溢出页使用SELECT*FROMINFORMATION_SCHEMA.INNODB_SYS_TABLESPACESWHERENAME='your_db/your_table';

总结

  • 物理行上限≈ 8,000 字节(主键页内)
  • 逻辑行上限4GB(通过溢出页)
  • 工程原则
    “单行越小,Buffer Pool 效率越高;大字段必须溢出”
    ROW_FORMAT=DYNAMIC+ 拆分宽表,方能兼顾容量与性能。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 14:40:34

Steam游戏时长自动增长终极解决方案:智能挂机工具完全指南

Steam游戏时长自动增长终极解决方案:智能挂机工具完全指南 【免费下载链接】HourBoostr Two programs for idling Steam game hours and trading cards 项目地址: https://gitcode.com/gh_mirrors/ho/HourBoostr 还在为Steam游戏时长统计而烦恼吗&#xff1f…

作者头像 李华
网站建设 2026/6/15 14:46:14

Maya动画重定向终极指南:5分钟掌握跨角色动画迁移核心技术

Maya动画重定向终极指南:5分钟掌握跨角色动画迁移核心技术 【免费下载链接】animation-retargeting-tool Animation retargeting tool for Autodesk Maya. Retargets mocap to a custom rig with a few clicks. 项目地址: https://gitcode.com/gh_mirrors/an/anim…

作者头像 李华
网站建设 2026/6/15 14:42:17

GitHub Desktop中文汉化终极指南:3分钟实现完美本地化体验

GitHub Desktop中文汉化终极指南:3分钟实现完美本地化体验 【免费下载链接】GitHubDesktop2Chinese GithubDesktop语言本地化(汉化)工具 项目地址: https://gitcode.com/gh_mirrors/gi/GitHubDesktop2Chinese 还在为GitHub Desktop全英文界面而头疼吗&#x…

作者头像 李华
网站建设 2026/6/15 10:32:25

IDM注册表权限锁定技术解析与实现指南

IDM注册表权限锁定技术解析与实现指南 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script Internet Download Manager作为业界领先的下载管理工具,其试用…

作者头像 李华
网站建设 2026/6/15 11:50:34

交通仿真软件:Paramics_(10).事件与应急管理

事件与应急管理 事件的定义与分类 在交通仿真软件中,事件是指系统中发生的特定行为或状态变化。这些事件可以是车辆的进入、离开、变道、碰撞、交通信号的变化等。事件的管理是确保仿真过程准确、高效的关键。Paramics 提供了丰富的事件处理机制,可以自定…

作者头像 李华
网站建设 2026/6/15 11:47:23

FIFA 23实时编辑器完整使用手册:从入门到精通

FIFA 23实时编辑器完整使用手册:从入门到精通 【免费下载链接】FIFA-23-Live-Editor FIFA 23 Live Editor 项目地址: https://gitcode.com/gh_mirrors/fi/FIFA-23-Live-Editor 想要彻底改变你的FIFA 23游戏体验吗?这款功能强大的FIFA 23实时编辑器…

作者头像 李华