MySQL混合utf8 utf8mb4是否比純utf8mb4更具優勢?
問題描述
表太多,僅昵稱和評論設置utf8mb4,config、tag、router等完全用不到utf8mb4的,依舊utf8這種utf8 utf8mb4混合會對搜索、索引和log記錄有影響嗎?這種方式比純utf8mb4更快速嗎?是否穩定?mysqld配置中是否需要修改什么配置、優化utf8mb4
PHP代碼DB_CHARSET設置utf8mb4,會對uft8數據有影響嗎?
問題解答
回答1:沒有太多優勢因為utf8mb4僅在emoji等特殊字符的時候用到了4個字節存儲其余時候表現和mysql的utf8字符集是一樣的, 存儲漢字仍然是3個字節
(因為mysql的utf8字符集的單個字符的最大長度方面的實現是錯誤的, 所以才冒出個utf8mb4字符集出來, 實際上這個utf8mb4就是標準的utf8)
當然, 需要避免使用char, 改用varchar, 因為mysql的char列類型在utf8mb4下, 為了保證所有的數據都存的下, char將會占用字符數*4的字節數 (mysql的char列類型utf8將占用字符數*3的字節數), 以保證空間分配足夠. 所以建議用可變長度varchar, 以節省空間. 可變長度消耗的存儲空間為: 實際存儲需要的字節數+1或2個字節表達的長度.
另外對于純英文字符的列, 你可以另外考慮varbinary(可變長度binary)和binary列(適用于固定長度的英文字符, 例如密碼哈希)類型, 性能比varchar略好, 因為這個存儲二進制數據
相關文章:
1. node.js - nodejs+express+vue2. javascript - 如何獲取未來元素的父元素在頁面中所有相同元素中是第幾個?3. java - web端百度網盤的一個操作為什么要分兩次請求服務器, 有什么好處嗎4. javascript - onclick事件點擊不起作用5. python - 如何把152753這個字符串轉變成時間格式15:27:536. javascript - webpack-dev-server和webpack沖突嗎7. 數據庫 - Mysql的存儲過程真的是個坑!求助下面的存儲過程哪里錯啦,實在是找不到哪里的問題了。8. 使用mysql命令行連接遠程數據庫host跳轉9. javascript - 我的站點貌似被別人克隆了, google 搜索特定文章,除了域名不一樣,其他的都一樣,如何解決?10. python 字符串匹配問題

網公網安備