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