MySQL混合utf8 utf8mb4是否比純utf8mb4更具優(yōu)勢?
問題描述
表太多,僅昵稱和評論設(shè)置utf8mb4,config、tag、router等完全用不到utf8mb4的,依舊utf8這種utf8 utf8mb4混合會對搜索、索引和log記錄有影響嗎?這種方式比純utf8mb4更快速嗎?是否穩(wěn)定?mysqld配置中是否需要修改什么配置、優(yōu)化utf8mb4
PHP代碼DB_CHARSET設(shè)置utf8mb4,會對uft8數(shù)據(jù)有影響嗎?
問題解答
回答1:沒有太多優(yōu)勢因?yàn)閡tf8mb4僅在emoji等特殊字符的時候用到了4個字節(jié)存儲其余時候表現(xiàn)和mysql的utf8字符集是一樣的, 存儲漢字仍然是3個字節(jié)
(因?yàn)閙ysql的utf8字符集的單個字符的最大長度方面的實(shí)現(xiàn)是錯誤的, 所以才冒出個utf8mb4字符集出來, 實(shí)際上這個utf8mb4就是標(biāo)準(zhǔn)的utf8)
當(dāng)然, 需要避免使用char, 改用varchar, 因?yàn)閙ysql的char列類型在utf8mb4下, 為了保證所有的數(shù)據(jù)都存的下, char將會占用字符數(shù)*4的字節(jié)數(shù) (mysql的char列類型utf8將占用字符數(shù)*3的字節(jié)數(shù)), 以保證空間分配足夠. 所以建議用可變長度varchar, 以節(jié)省空間. 可變長度消耗的存儲空間為: 實(shí)際存儲需要的字節(jié)數(shù)+1或2個字節(jié)表達(dá)的長度.
另外對于純英文字符的列, 你可以另外考慮varbinary(可變長度binary)和binary列(適用于固定長度的英文字符, 例如密碼哈希)類型, 性能比varchar略好, 因?yàn)檫@個存儲二進(jìn)制數(shù)據(jù)
相關(guān)文章:
1. javascript - sublime快鍵鍵問題2. javascript - immutable配合react提升性能?3. css - 寫頁面遇到個布局問題,求大佬們幫解答,在線等,急!~4. javascript - nodejs關(guān)于進(jìn)程間發(fā)送句柄的一點(diǎn)疑問5. Apache 已經(jīng)把網(wǎng)站根目錄的改為allow from all了,但是服務(wù)器還是不能訪問?6. 實(shí)現(xiàn)bing搜索工具urlAPI提交7. 配置Apache時,添加對PHP的支持時語法錯誤8. vue.js - Vue 如何像Angular.js watch 一樣監(jiān)聽數(shù)據(jù)變化9. javascript - 移動端上不能實(shí)現(xiàn)拖拽布局嗎?10. phpstudy8.1支持win11系統(tǒng)嗎?

網(wǎng)公網(wǎng)安備