news 2026/4/17 21:17:34

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/4/18 8:55:21

ControlNet++ ProMax:12种控制+5大编辑,新手也能玩转AI绘画

ControlNet ProMax:12种控制5大编辑,新手也能玩转AI绘画 【免费下载链接】controlnet-union-sdxl-1.0 项目地址: https://ai.gitcode.com/hf_mirrors/xinsir/controlnet-union-sdxl-1.0 还在为AI绘画无法精准控制而烦恼吗?想要一款能…

作者头像 李华
网站建设 2026/4/18 8:46:54

如何快速掌握palera1n:iOS越狱终极指南

如何快速掌握palera1n:iOS越狱终极指南 【免费下载链接】palera1n Jailbreak for arm64 devices on iOS 15.0 项目地址: https://gitcode.com/GitHub_Trending/pa/palera1n palera1n是一款基于checkm8硬件漏洞的iOS/iPadOS/tvOS越狱工具,支持arm6…

作者头像 李华
网站建设 2026/2/27 19:35:45

2025终极指南:IDM永久免费激活完全教程

2025终极指南:IDM永久免费激活完全教程 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为Internet Download Manager的试用期限制而烦恼吗&#…

作者头像 李华
网站建设 2026/4/18 8:52:43

交通仿真软件:Paramics_(10).多模态交通仿真实践

多模态交通仿真实践 在交通仿真领域,多模态交通仿真是一个重要的研究方向。多模态交通仿真可以模拟多种交通方式的交互,如汽车、公共交通、自行车和行人等。通过这种方式,可以更全面地评估交通系统的性能,优化交通管理和规划。本节…

作者头像 李华
网站建设 2026/3/20 15:48:02

PDF-Extract-Kit部署教程:Docker容器化运行指南

PDF-Extract-Kit部署教程:Docker容器化运行指南 1. 引言 1.1 技术背景与应用场景 随着数字化办公和学术研究的深入发展,PDF文档中结构化信息的提取需求日益增长。传统方法难以高效处理包含复杂布局、数学公式、表格和图像的PDF文件。为此,…

作者头像 李华