utf8mb4_0900_as_cs 和 utf8mb4_bin 之间对比
utf8mb4_0900_as_cs 和 utf8mb4_bin 的对比
这两种 MySQL 字符集排序规则在功能和特性上有一些重要区别:
utf8mb4_0900_as_cs
- 基于 Unicode 9.0.0 标准(较新)
- 区分大小写(case-sensitive,"cs"表示)
- 提供更精确的语言感知排序
- MySQL 8.0 及以上版本引入
- 性能优化更好
- 支持补充字符(包括表情符号)
- 在排序时考虑语言特定规则
utf8mb4_bin
- 较老的排序规则
- 区分大小写
- 基于二进制比较(按照字符的二进制编码排序)
- 在所有 MySQL 版本中可用
- 简单直接的比较方式
- 不考虑语言特定的排序规则
主要差异
- 排序行为:utf8mb4_0900_as_cs 按照 Unicode 规则排序,更符合人类语言习惯;utf8mb4_bin 纯粹按二进制值排序
- 版本兼容性:utf8mb4_0900_as_cs 需要 MySQL 8.0+,而 utf8mb4_bin 适用于所有版本
- 性能:utf8mb4_0900_as_cs 在 MySQL 8.0+ 中可能有更好的性能优化
- 语言感知:utf8mb4_0900_as_cs 更了解各种语言的特性
选择建议
- 如果使用 MySQL 8.0 以上版本并需要语言感知排序,选择 utf8mb4_0900_as_cs
- 如果需要跨版本兼容性或纯粹的二进制比较,选择 utf8mb4_bin
- 两者都区分大小写,但排序逻辑不同
在现代应用中,如果没有特殊兼容性要求,utf8mb4_0900_as_cs 通常是更好的选择。
utf8mb4_0900_as_cs
虽然 utf8mb4_0900_as_cs 这个字符集的版本更好,但在 Ubuntu 24.04 的版本中没有安装最新的 MariaDB 11 版本。
所以这个字符集没有办法在默认的 Ubuntu 24.04 安装数据库上使用。