每个 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 位)是大多数(不是所有)其他字符集的子集。
"All the different collations" -- 答案在不断演变,这取决于您 运行 的 MySQL 版本。 运行SHOW COLLATION;
。在 5.6.12 中,我看到了跨越几十个字符集的 219 个排序规则。
VARCHAR(10)
将占用 2-32 个字节(长度为 2),具体取决于其中的文本。 '0123456789' 在 VARCHAR
.
中仅占用 12 个字节
CHAR(10)
utf8 总是占用 30 个字节。使用 CHAR
和默认的 utf8
是一个常见的错误,因此浪费了很多 space.
你还想知道什么?
是否有关于所有不同 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 位)是大多数(不是所有)其他字符集的子集。
"All the different collations" -- 答案在不断演变,这取决于您 运行 的 MySQL 版本。 运行SHOW COLLATION;
。在 5.6.12 中,我看到了跨越几十个字符集的 219 个排序规则。
VARCHAR(10)
将占用 2-32 个字节(长度为 2),具体取决于其中的文本。 '0123456789' 在 VARCHAR
.
CHAR(10)
utf8 总是占用 30 个字节。使用 CHAR
和默认的 utf8
是一个常见的错误,因此浪费了很多 space.
你还想知道什么?