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