TinyText和Text的存储空间需求差异 - MySQL

Sou*_*rav 3 mysql sql types

在MySQL手册数据类型存储要求中,我发现:

Data Type   Storage Required
--------------------------------------------
TINYTEXT    L + 1 bytes, where L < 2^8  
TEXT        L + 2 bytes, where L < 2^16
Run Code Online (Sandbox Code Playgroud)
  1. 如果我在TinyText中存储240个字符[utf8-general],并且在Text字段中,Text字段只比TinyText多1个字节?
  2. 如果我存储1024个字母[utf8-general],文本将占用多少空间?
    我认为1024 + 2字节!
  3. 如果我在文本字段中保存单个字符或2 ^ 16个字符,它会占用相同的空间吗?

Jon*_*ler 6

  1. TinyText最多只能存储255个字节.如果您非常不幸需要存储所有需要4个UTF-8字节的63个字符,那么这可能只有63个字符.另一方面,它实际上可以存储255个字符,实际上是UTF-8的ASCII子集.

  2. 如果存储1024个字符,则它们将占用1024到4096(+2)个字节.使用UTF-8编码的Unicode字符将占用1到4个字节.

  3. 需要一个字节(U + 0000 .. U + 007F)的单个字符在文本字段中需要3个字节(字符为1,长度为2).另一方面,需要4个字节的单个字符(比如U + 101001 - 我不确定它作为Unicode字符有效,但需要4个字节来存储它)将需要总共6个字节来存储它.在两种情况下都不接近2 ^ 16字节.

在处理Unicode时,要学会区分字节和字符; 这是非常重要的.