【问题标题】:Memory Usage per Character for each MySQL Collation每个 MySQL 排序规则的每个字符的内存使用情况
【发布时间】:2015-06-05 14:55:21
【问题描述】:

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

【问题讨论】:

    标签: mysql memory memory-management character collation


    【解决方案1】:

    “排序规则”对大小没有影响。 “字符集”可以。以下是一些答案:

    • 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

    “所有不同的排序规则”——答案在不断发展,这取决于您运行的 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 是一个常见的错误,因此会浪费大量空间。

    你还想知道什么?

    【讨论】:

      猜你喜欢
      • 2013-09-11
      • 1970-01-01
      • 1970-01-01
      • 2011-08-28
      • 2013-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多