mysql 中的 UTF8MB4 是否是定长存储?
在得知 MySQL 引入了 UTF8MB4 数据类型后,不禁发问:如果我使用了 UTF8MB4,但在其中仅存储了几个字母(例如:“abc”),这些字母在存储时将占用 3 个字节还是 12 个字节?
答案:
UTF8MB4 是一种变长存储字符集。“MB”表示“Most Bytes”,即“最多字节”。这表明 UTF8MB4 字符集使用可变数量的字节来存储字符,具体取决于字符的编码。
对于包含在基本多语言平面上(BMP)的字符(即大多数常见语言中的常见字符),UTF8MB4 和 UTF8MB3 使用相同的存储方式,即使用 1 到 3 个字节。但是,对于超出 BMP 范围的字符(即补充字符),UTF8MB4 则需要 4 个字节来存储,而 UTF8MB3 无法存储这种字符。
因此,“abc”三个字母在 UTF8MB4 中将占用 3 个字节,而不是 12 个字节。