Yihui’s Blog

MySQL 中 TEXT 类型最大可以存储多长的文本?

日期:2026-07-11
难度:中等
标签:#面试 #MySQL #TEXT #数据类型 #VIP

一句话答案

狭义 TEXT 最大 65,535 字节;TEXT 家族还包括 TINYTEXT 255 字节、MEDIUMTEXT 16,777,215 字节和 LONGTEXT 4,294,967,295 字节,实际可存字符数取决于字符集。

原理拆解

类型最大字节数长度前缀
TINYTEXT2551 字节
TEXT65,5352 字节
MEDIUMTEXT16,777,2153 字节
LONGTEXT4,294,967,2954 字节

面试口语版

回答时要强调限制单位是字节,不是固定字符数。比如 utf8mb4 一个字符最多 4 字节,所以 TEXT 最坏情况下能放的字符数明显少于 65,535。InnoDB 对较长的可变长字段可能使用页外存储,行内保留指针或部分前缀,具体受行格式和长度影响。TEXT 不能随意建立完整普通索引,通常使用前缀索引、全文索引或将检索交给搜索系统。

关键细节

  • LONGTEXT 的理论上限接近 4GB,但还受 max_allowed_packet、客户端内存和 InnoDB 单行总量等限制。
  • 选择类型要依据真实上限,避免一律 LONGTEXT 造成约束缺失和资源风险。
  • 大文本读取会增加网络、Buffer Pool 与应用内存压力。

面试官追问

  1. utf8mb4 下 TEXT 最多一定是 16,383 个字符吗?
  2. TEXT 如何建立索引?
  3. 页外存储是否意味着 Buffer Pool 不缓存?

高分补充

数据类型的理论容量不等于合理业务容量,接口层仍应设置长度与包大小限制。

学习清单

  • 记住 2^8−1、2^16−1、2^24−1、2^32−1 四级上限。
Maintained by · YihuiEdit on GitHub

Keep reading

View all posts