news 2026/7/25 4:07:06

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/7/21 11:03:50

OpenFPGA开源指南:如何快速掌握FPGA IP核生成技术

OpenFPGA开源指南:如何快速掌握FPGA IP核生成技术 【免费下载链接】OpenFPGA An Open-source FPGA IP Generator 项目地址: https://gitcode.com/gh_mirrors/op/OpenFPGA OpenFPGA作为一款开源的FPGA IP生成器,为硬件开发者提供了从Verilog代码到…

作者头像 李华
网站建设 2026/7/19 19:55:32

交通仿真软件:Paramics_(11).公交系统仿真

公交系统仿真 1. 公交车辆建模 在交通仿真软件Paramics中,公交车辆建模是公交系统仿真的基础。通过准确建模公交车辆,可以确保仿真结果的可靠性和准确性。公交车辆建模包括车辆参数设置、车辆行为定义和车辆外观设计等。 1.1 车辆参数设置 在Paramics中&…

作者头像 李华
网站建设 2026/7/21 18:30:05

论文导师不会告诉你的秘密:这8个免费AI神器,专治写作恐惧症!

开篇悬念:90%学生不知道的论文“黑科技”,导师私藏了3年 凌晨2点的实验室,你盯着空白的Word文档发呆——导师上周退回的论文上,红色批注像密密麻麻的“催命符”:“逻辑断裂”“文献引用不规范”“语言太口语化”……而…

作者头像 李华
网站建设 2026/7/22 22:46:53

玄铁E906 RISC-V处理器终极实战指南:从架构解析到性能调优

玄铁E906 RISC-V处理器终极实战指南:从架构解析到性能调优 【免费下载链接】opene906 OpenXuantie - OpenE906 Core 项目地址: https://gitcode.com/gh_mirrors/ope/opene906 在嵌入式系统开发领域,面对日益复杂的应用需求,开发者们迫…

作者头像 李华
网站建设 2026/7/23 2:10:55

Visual Studio完整卸载终极指南:彻底清理系统残留

Visual Studio完整卸载终极指南:彻底清理系统残留 【免费下载链接】VisualStudioUninstaller Visual Studio Uninstallation sometimes can be unreliable and often leave out a lot of unwanted artifacts. Visual Studio Uninstaller is designed to thoroughly …

作者头像 李华