日期:2026-07-11
难度:中等
标签:#面试 #MySQL #TEXT #数据类型 #VIP
一句话答案
狭义 TEXT 最大 65,535 字节;TEXT 家族还包括 TINYTEXT 255 字节、MEDIUMTEXT 16,777,215 字节和 LONGTEXT 4,294,967,295 字节,实际可存字符数取决于字符集。
原理拆解
| 类型 | 最大字节数 | 长度前缀 |
|---|---|---|
| TINYTEXT | 255 | 1 字节 |
| TEXT | 65,535 | 2 字节 |
| MEDIUMTEXT | 16,777,215 | 3 字节 |
| LONGTEXT | 4,294,967,295 | 4 字节 |
面试口语版
回答时要强调限制单位是字节,不是固定字符数。比如 utf8mb4 一个字符最多 4 字节,所以 TEXT 最坏情况下能放的字符数明显少于 65,535。InnoDB 对较长的可变长字段可能使用页外存储,行内保留指针或部分前缀,具体受行格式和长度影响。TEXT 不能随意建立完整普通索引,通常使用前缀索引、全文索引或将检索交给搜索系统。
关键细节
- LONGTEXT 的理论上限接近 4GB,但还受
max_allowed_packet、客户端内存和 InnoDB 单行总量等限制。 - 选择类型要依据真实上限,避免一律 LONGTEXT 造成约束缺失和资源风险。
- 大文本读取会增加网络、Buffer Pool 与应用内存压力。
面试官追问
- utf8mb4 下 TEXT 最多一定是 16,383 个字符吗?
- TEXT 如何建立索引?
- 页外存储是否意味着 Buffer Pool 不缓存?
高分补充
数据类型的理论容量不等于合理业务容量,接口层仍应设置长度与包大小限制。
学习清单
- 记住 2^8−1、2^16−1、2^24−1、2^32−1 四级上限。