iT邦幫忙

0

從技術層面分析IT邦不將mysql編碼從utf8改為utf8mb4?

請問是效能嗎?
之前我也是使用 utf8_unicode_ci 後面改為 utf8mb4_unicode_ci,效能也沒有影響太大,當時20GB增長成20.4GB

當時使用的語法:

ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

請問有經驗的前輩能提供想法嗎?

wrxue iT邦研究生 3 級 ‧ 2021-07-20 10:10:47 檢舉
重點是 utf8 與 utf8mb4,general/unicode 影響的是排序不是編碼
https://stackoverflow.com/questions/30074492/what-is-the-difference-between-utf8mb4-and-utf8-charsets-in-mysql

utf8最大使用3bytes
utf8mb4最大使用4bytes
淺水員 iT邦高手 3 級 ‧ 2021-07-20 19:45:39 檢舉
其實很多論壇好像都沒有 utf8mb4
我滿常用以下這四個化學元素來測試的
"\ud862\uddc0\ud862\udf4e\ud862\ude0f\ud862\udf46"

1 個回答

4
㊣浩瀚星空㊣
iT邦超人 1 級 ‧ 2021-07-20 13:02:44
最佳解答

一般通用編碼(general)與萬國碼編碼(unicode)的差異。只差異在在容量的問題。
而這些差異的容量只會表現在非英數的文字上。

所以一般來說,大多數索引對應或是搜尋而言。
最大多數的搜尋規劃會統一英數處理。

效能的差異,只會表現在全文索引及LIKE的處理。
所以在正常來說,如果考量到空間問題的情況下。
大多數來說還是使用 general 為主。

而一般我自已來說,如果今天的站屬於國際性或是有可能需要多語系的情況。
我才會選用 unicode 這種編碼了。
而正常我還是會依 general 為主。

如果要真正的說這兩種編碼的相對應差異。
最簡單的說明就是容量大小不同及一些可能會因為容量而導致的效能低下問題。
但低下的問題一般很微小,微小到不達到一定的量是感覺不到其差異。

工程詩 iT邦新手 5 級 ‧ 2021-07-20 14:03:00 檢舉

感謝! 大神,不好意思,我發現我犯傻了,it邦不支援emoji原因是非utf8mb4造成的
但感謝大神解釋general跟unicode

我要發表回答

立即登入回答