UTF8mb4 的存儲(chǔ)特性
關(guān)于 utf8mb4 是否為定長(zhǎng)存儲(chǔ)的問題,我們從相關(guān)文檔中了解到:
- utf8mb4 是一種變長(zhǎng)的編碼,取決于存儲(chǔ)的字符。
- 與 utf8mb3 相比,utf8mb4 可以存儲(chǔ)更大的字符范圍,包括補(bǔ)充字符。
存儲(chǔ)空間占用
當(dāng)存儲(chǔ) BMP 字符(Unicode 中范圍 from U+0000 to U+FFFF 的常見字符)時(shí),utf8mb4 和 utf8mb3 具有相同的存儲(chǔ)特性:
- 一個(gè)英文字符占 1 個(gè)字節(jié)。
- 一個(gè) BMP 字符最多占 3 個(gè)字節(jié)。
然而,對(duì)于補(bǔ)充字符(超出 BMP 范圍的字符),utf8mb4 需要 4 個(gè)字節(jié)來存儲(chǔ),而 utf8mb3 無法存儲(chǔ)它們。
因此,utf8mb4 不是定長(zhǎng)存儲(chǔ),其存儲(chǔ)空間占用根據(jù)存儲(chǔ)的字符而變化。存儲(chǔ)的字符越多,占用的空間就越大。這主要是因?yàn)?utf8mb4 允許存儲(chǔ)更寬的字符范圍,包括表情符號(hào)和中文漢字。