每个 MySQL 归类的每个字符的内存使用

Memory Usage per Character for each MySQL Collation

是否有关于所有不同 MySQL 归类的良好捆绑文档?我的意思是一个概述,其中还包括每个字符的内存使用情况(dynamic/static 大小)和可以存储在每个排序规则中的字符类型?

"Collation" 对大小没有影响。 "Character set" 确实如此。以下是一些答案:

  • ascii、二进制、latin1、latin2 等——1 个字符 = 1 个字节。
  • big5、euc*、*jis、希伯来语等 -- 1 个字符 = 2 个字节。
  • utf8 -- 1 个字符 = 1 或 2 或 3 个字节。一般英文1字节,其他西欧字符2字节,亚洲3字节。 More details
  • utf8mb4 -- 1 个字符 = 1 或 2 或 3 或 4 个字节。是utf8,加上Emoji和一些汉字。

utf8mb4几乎可以存储世界上所有已知的字符。它在我们说话的同时也在不断发展。

ascii(7 位)是大多数(不是所有)其他字符集的子集。

Collation vs Character set

"All the different collations" -- 答案在不断演变,这取决于您 运行 的 MySQL 版本。 运行SHOW COLLATION;。在 5.6.12 中,我看到了跨越几十个字符集的 219 个排序规则。

The Reference Manual Chapter

VARCHAR(10) 将占用 2-32 个字节(长度为 2),具体取决于其中的文本。 '0123456789' 在 VARCHAR.

中仅占用 12 个字节

CHAR(10) utf8 总是占用 30 个字节。使用 CHAR 和默认的 utf8 是一个常见的错误,因此浪费了很多 space.

你还想知道什么?