UTF8mb4 的存储特性
关于 utf8mb4 是否为定长存储的问题,我们从相关文档中了解到:
- utf8mb4 是一种变长的编码,取决于存储的字符。
- 与 utf8mb3 相比,utf8mb4 可以存储更大的字符范围,包括补充字符。
存储空间占用
当存储 BMP 字符(Unicode 中范围 from U+0000 to U+FFFF 的常见字符)时,utf8mb4 和 utf8mb3 具有相同的存储特性:
- 一个英文字符占 1 个字节。
- 一个 BMP 字符最多占 3 个字节。
然而,对于补充字符(超出 BMP 范围的字符),utf8mb4 需要 4 个字节来存储,而 utf8mb3 无法存储它们。
因此,utf8mb4 不是定长存储,其存储空间占用根据存储的字符而变化。存储的字符越多,占用的空间就越大。这主要是因为 utf8mb4 允许存储更宽的字符范围,包括表情符号和中文汉字。