眾所周知,MySQL 中的 UTF8MB4 數據類型用于存儲Unicode字符,但它是否是定長存儲呢?
答案是:否。UTF8MB4 是變長的,這意味著存儲字符所需的字節數根據字符的編碼值而變化。
即使在選擇了 UTF8MB4 數據類型的情況下,存儲單個英文字母(如“a”)時,它仍然只占用一個字節。這與原本的 UTF8MB3 數據類型一致,后者也被設計為變長的。
UTF8MB4 中的“MB”代表“最多字節”,意味著它最多可以使用四個字節來存儲單個字符。對于常見的單詞和短語,通常只需要一個或兩個字節。但是,對于某些輔助字符,如表情符號,就需要四個字節。
因此,雖然 MySQL 引入了 UTF8MB4 數據類型,但它并不是為了取代 UTF8MB3,而是為了提供一種存儲更廣泛 Unicode 字符集(包括輔助字符)的方式。這提高了存儲非拉丁文字或特殊字符的能力,同時仍保持存儲效率。