代码之家  ›  专栏  ›  技术社区  ›  Benj

在MySQL中,varchar(100)声明使用了多少实际存储空间?

  •  20
  • Benj  · 技术社区  · 15 年前

    如果我有一个表,其中有一个字段声明为接受varchar(100),然后我实际插入了“hello”一词,那么mysql服务器上会使用多少实际存储空间?此外,即使声明了varchar(100),插入空值也会导致不使用存储吗?

    答案是什么?不同的数据库实现是否一致?

    4 回复  |  直到 15 年前
        1
  •  20
  •   ʞɔıu    15 年前

    如果我有一张带有字段的桌子 声明为接受varchar(100) 然后我实际上插入了这个词 “你好”实际存储量是多少 在mysql服务器上使用?

    MySQL将存储5个字节加上1个字节的长度。如果varchar大于255,那么它将存储2个字节的长度。

    请注意,这取决于列的字符集。如果字符集是utf8,则mysql每个字符最多需要3个字节。某些存储引擎(即内存)将始终要求字符集的每个字符的最大字节长度。

    也将插入空结果 即使没有使用存储 是否声明varchar(100)?

    使列可以为空意味着MySQL必须为每行最多8个可以为空的列留出一个额外的字节。这被称为“空掩码”。

    答案是什么?不同的数据库实现是否一致?

    MySQL中的存储引擎甚至不一致!

        2
  •  13
  •   Corey Ballou    15 年前

    这真的取决于你桌子上的字符集。

    与char不同,varchar值 存储为一个字节或两个字节 长度前缀加上数据。长度 前缀表示字节数 在价值上。列使用一个长度 字节,如果值要求不超过 255字节,如果值为2个长度字节 可能需要超过255个字节。

    - source

    UTF-8通常比 为一个或几个编码 语言。带的拉丁文字母 发音符号和其他字符 字母脚本通常需要一个 在适当的 多字节编码,但需要两个 UTF-8。东亚文字 每个字符的 多字节编码需要三个 每字符字节数(UTF-8)。

    - source

        3
  •  2
  •   Chris Gutierrez    15 年前

    varchar只存储使用的内容,而char存储一组字节数。

        4
  •  0
  •   Dan YOU    15 年前

    utf16有时比utf8需要更少的数据,对于一些罕见的语言,我不知道是哪种语言。

    伙计们,有选择吗 压缩的 MySQL中的表?就像在阿帕奇。谢谢