MySQL数据库单行数据最大可以存储多少详解

 更新时间:2026年07月30日 09:28:52   作者:快点好好学习吧  
MySQL中一行数据的最大大小是65535字节(即64KB),但这包括了行的所有字段以及一些管理开销,因此实际可用的存储空间通常会少于这个理论值,这篇文章主要介绍了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 和磁盘空间)

示例:

CREATE TABLE t (
    id INT PRIMARY KEY,
    content LONGTEXT  -- 可存 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已废弃

最佳实践

CREATE TABLE t (...) ROW_FORMAT=DYNAMIC;

五、极端情况测试

1.最大单行(无溢出)

-- 创建接近 8KB 的行
CREATE TABLE max_row (
    c1 VARCHAR(7000),
    c2 VARCHAR(900)
) ROW_FORMAT=DYNAMIC;
  • 插入INSERT INTO max_row VALUES (REPEAT('a',7000), REPEAT('b',900));
  • 结果:成功(总 ≈ 7,900B)

2.最大单行(含溢出)

-- 存储 1GB JSON
CREATE TABLE huge_json (
    id INT PRIMARY KEY,
    data JSON
) ROW_FORMAT=DYNAMIC;

INSERT INTO huge_json VALUES (1, LOAD_FILE('/path/to/1gb.json'));
  • 结果:成功(主键页仅存指针)

六、生产建议

  1. 避免宽表

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

    SET GLOBAL innodb_file_format=Barracuda;
    SET GLOBAL innodb_file_per_table=ON;
    CREATE TABLE t (...) ROW_FORMAT=DYNAMIC;
    
  3. 监控溢出页

    -- 查看溢出页使用
    SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES 
    WHERE NAME='your_db/your_table';
    

总结

  • 物理行上限≈ 8,000 字节(主键页内)
  • 逻辑行上限4GB(通过溢出页)
  • 工程原则
    “单行越小,Buffer Pool 效率越高;大字段必须溢出”
    ROW_FORMAT=DYNAMIC + 拆分宽表,方能兼顾容量与性能。

到此这篇关于MySQL数据库单行数据最大可以存储多少的文章就介绍到这了,更多相关MySQL单行数据最大存储内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • mysql备份的三种方式详解

    mysql备份的三种方式详解

    备份的本质就是将数据集另存一个副本,但是原数据会不停的发生变化,所以利用备份只能回复到数据变化之前的数据。那变化之后的呢?所以制定一个好的备份策略很重要
    2013-09-09
  • MySQL的LEFT JOIN表连接的进阶学习教程

    MySQL的LEFT JOIN表连接的进阶学习教程

    这篇文章主要介绍了MySQL的LEFT JOIN表连接的进阶学习教程,包括对左连接的查询效率分析以及相关建议,需要的朋友可以参考下
    2015-12-12
  • 深入分析MySQL 的备份和恢复机制

    深入分析MySQL 的备份和恢复机制

    备份对于数据库来说是相当重要的工作。如果数据库在使用过程中出现了问题,比如系统崩溃、硬件故障或错误的删除了数据。这时,如果我们进行了数据备份,就能比较方便的使数据库恢复工作,并使我们的数据损失到最小。下面我们来详细探讨下数据库的备份与恢复。
    2016-11-11
  • windows下安装mysql8.0.18的教程(社区版)

    windows下安装mysql8.0.18的教程(社区版)

    本文章简单介绍一下mysql在windows下的安装方式,主要介绍了mysql社区版8.0.18版本,本文给大家介绍的非常详细,需要的朋友参考下吧
    2020-01-01
  • mysql授权、启动、启动服务常用命令

    mysql授权、启动、启动服务常用命令

    本篇文章给大家分享了mysql授权、启动、启动服务常用命令总结,希望我们整理的内容对大家有用。
    2018-03-03
  • MySQL中with窗口函数说明及使用案例总结

    MySQL中with窗口函数说明及使用案例总结

    这篇文章主要介绍了MySQL中with窗口函数说明及使用案例的相关资料,窗口函数允许在查询结果的特定窗口上执行计算,而不会改变结果集的行数,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-11-11
  • MySQL数据库分组查询group by语句详解

    MySQL数据库分组查询group by语句详解

    这篇文章主要介绍了MySQL数据库分组查询group by语句详解,文中含有详细示例代码说明解析,有需要的朋友可以借鉴参考想=下,希望能够有所帮助
    2021-09-09
  • MySQL高级开发中视图的详细教程

    MySQL高级开发中视图的详细教程

    对MySQL数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理,下面这篇文章主要给大家介绍了关于MySQL数据库基本SQL语句教程之高级操作中视图的相关资料,需要的朋友可以参考下
    2023-01-01
  • 解决Mysql:ERROR 1045 (28000):Access denied for user ‘root‘@‘localhost‘ (using password: NO)的方法

    解决Mysql:ERROR 1045 (28000):Access denied for user ‘roo

    最近在我们连接数据库的时候遇到个问题,感觉还挺容易遇到的,所以总结下,这篇文章主要给大家介绍了关于解决Mysql:ERROR 1045 (28000):Access denied for user ‘root‘@‘localhost‘ (using password: NO)的方法,需要的朋友可以参考下
    2022-06-06
  • MySQL索引下推的实现示例

    MySQL索引下推的实现示例

    索引下推是MySQL 5.6引入的优化技术,旨在减少查询过程中的不必要行访问和回表操作,从而提升查询性能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10

最新评论