gpt4 book ai didi

mysql - 使用 ASCII/Latin Charset 会加速数据库吗?

转载 作者:可可西里 更新时间:2023-11-01 07:47:59 27 4
gpt4 key购买 nike

似乎对大多数字段使用 ASCII 字符集,然后仅对需要它的字段指定 utf8 会减少数据库必须执行的 I/O 量 100%。

谁知道这是不是真的?

更新:以上并不是我的问题。我应该说:使用拉丁语作为默认字符集,然后只为需要它的字段指定 utf8mb4。想法是:使用 1 个字节与 2 个字节应该将 I/O 提高 100%。抱歉造成混淆。

最佳答案

简短回答:不值得担心。

长答案:

两个问题:

  • 速度:

将两种编码与相应的 _bin(ascii_bin 或 utf8_bin)COLLATION 进行比较就像比较字节一样简单——因此没有显着差异。其他排序规则可能不同,ascii 更快。 但是与获取行等的工作相比,差异微不足道。

  • 空间:

Ascii 是 utf8 的子集。 utf8 只为每个 ascii 字符存储 1 个字节,就像 ascii 一样。所以,没有空间差异。 (西欧的重音字母需要 1 字节 latin1 或 2 字节 utf8;因此不兼容且大小不同。)空间导致缓存,这导致性能略有不同。

对于英文文本,节省 0%。对于欧洲人,latin1 只会节省几个百分点;对于世界其他大部分地区,utf8 是唯一可行的解​​决方案。对于中文和 Emoji,utf8mb4 是必须的。

  • 临时表

在某些情况下,字符串占用的空间会扩展到潜在的最大值。 country_code CHAR(2) CHARACTER SET ... 将占用 2 个字节用于 ascii; 6 个字节用于 utf8。

底线:

将 ascii 用于国家代码、十六进制、邮政编码、uuid、md5s 等。如果你要国际化,和/或需要表情符号,那么将你的“字符串”设为 utf8mb4。但这样做是因为它是“正确的”,而不是因为你会神奇地获得更快的速度;你不会。每当你创建一个表时都这样做;坑了以后再改。

关于mysql - 使用 ASCII/Latin Charset 会加速数据库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51488429/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com