gpt4 book ai didi

MySQL字符串编码存储空间

转载 作者:行者123 更新时间:2023-11-29 07:50:19 25 4
gpt4 key购买 nike

我知道MySQL中的utf8存储为固定长度3字节(24位),而utf4mb4存储为固定长度4字节。我假设 Latin 1 是固定长度的 1 字节 - 我的问题是 mysql ascii 类型 7 位,并且比 Latin-1 是否有轻微的存储节省?

最佳答案

你最初的前提是不正确的。在 VARCHAR 以及 *TEXT 列中,utf8 和 utf8mb4 字符仅消耗每个字符的 utf8 表示所需的存储字节数。唯一固定的多字节分配是针对 CHAR 列,因为它们是固定宽度的。

Tip: To save space with UTF-8, use VARCHAR instead of CHAR. Otherwise, MySQL must reserve three bytes for each character in a CHAR CHARACTER SET utf8 column because that is the maximum possible length. For example, MySQL must reserve 30 bytes for a CHAR(10) CHARACTER SET utf8 column.

http://dev.mysql.com/doc/refman/5.6/en/charset-unicode-utf8.html

否则,在存储 utf8 和 utf8mb 字符时,每个字符不会使用每个字符的最大字节数:

when using the utf8 (or utf8mb4) Unicode character set, you must keep in mind that not all characters use the same number of bytes and can require up to three (four) bytes per character. [emphasis added]

http://dev.mysql.com/doc/refman/5.6/en/storage-requirements.html

没有 7 位存储字节跨度字符集。

但是,在较新的版本中可以压缩整个表,并且如果您有足够的 CPU,如果您的磁盘相对较慢或者您的服务器花费大量时间在启用表压缩,则服务器实际上可以在启用表压缩的情况下执行更好的性能/O-bound。

http://dev.mysql.com/doc/refman/5.6/en/innodb-compression.html

关于MySQL字符串编码存储空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26617637/

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