mysql char,varchar和十进制字节大小

问题描述 投票:-2回答:1

我正在读取不同数据类型的字节大小的mysql documentation,但是当涉及char,varchar和decimal时有点困惑。

有人可以帮助解释这三种数据类型的字节,还可以回答以下几个字节:

char(7)
varchar(9)
decimal(15,2)
decimal(11,6)

谢谢

mysql varchar
1个回答
1
投票

CHAR(N)可能是最令人困惑的,因为char不是字符集中固定的字节大小。此外,不同的行格式以不同方式处理此问题。 Tersely,如果您使用ROW_FORMAT = COMPACT,ROW_FORMAT = DYNAMIC或ROW_FORMAT = COMPRESSED,则CHAR(N)反转最少N个字节,以便在没有碎片的情况下实现更新。如果由于不同的字符编码需要更多字节而不是根据需要使用更多字节,则尝试使用尽可能少的字节,并且使用不超过最大字符字节长度* N.如果您使用的是ROW_FORMAT = REDUNDANT,则CHAR(N)始终使用最大字符长度* N.

VARCHAR(N)和VARBINARY(N)设置每列N的最大字符长度。在N之下,MySQL使用给定字符串和字符编码所需的字节数。如果字符串低于256字节,MySQL然后使用一个额外的字节来记录字符串的长度。如果字符串的长度大于255个字节,则使用2个字节来记录字符串的长度。 VAR列具有存储效率,但对于具有频繁更新的字符串列,可以使用固定长度列(如BINARY)来交换存储以提高性能。

DECIMAL描述非常自我解释:“DECIMAL(和NUMERIC)列的值使用二进制格式表示,该格式将九个十进制(基数10)数字打包成四个字节。每个值的整数和小数部分的存储量分别确定。九位数的每个倍数需要四个字节,“剩余”数字需要四个字节的一小部分。超出数字所需的存储量由下表给出“

© www.soinside.com 2019 - 2024. All rights reserved.