创建游戏市场的数据库

23 浏览
0 Comments

创建游戏市场的数据库

在MySQL中创建一个包含VARCHAR列的表时,我们必须为其设置长度。但对于TEXT类型,我们不需要提供长度。\nVARCHARTEXT之间有什么区别?

0
0 Comments

创建游戏市场数据库的原因是MySQL对每行的最大大小有字节限制,而VARCHAR列的大小计入了最大行大小,而TEXT列被认为是通过引用存储其数据,所以只需要9-12个字节。这意味着即使您的VARCHAR字段的“理论”最大大小为65,535个字符,如果表中有多列,您将无法实现这一点。此外,VARCHAR字段所需的实际字节数取决于列的编码(和内容)。 MySQL计算用于最大行大小的最大可能字节数,因此如果您使用多字节编码(如utf8mb4),它将使用更多的最大行大小。

解决方法是根据需求选择使用VARCHAR或TEXT。使用TEXT的原因包括:如果要存储一个段落或更多的文本;如果不需要对该列进行索引;如果已达到表的行大小限制。使用VARCHAR的原因包括:如果要存储几个单词或一个句子;如果要对(整个)列进行索引;如果要在外键约束中使用该列。

对于VARCHAR和TEXT,默认情况下,它们都会将其内容的一部分存储在行中。如果表的ROW_FORMAT=DYNAMIC且内容不适合行中,则VARCHAR或TEXT都将存储为指向另一页的指针。如果ROW_FORMAT=COMPACT,则VARCHAR和TEXT将在行中存储其前768个字节,其余部分存储在另一页上。

MySQL手册指出:“...即使存储引擎能够支持更大的行,BLOB和TEXT列也只对行大小限制贡献9到12个字节,因为它们的内容与行的其余部分分开存储。”如果它将部分内容存储在行中,似乎与手册相矛盾。在文档的同一页中,它还说:“变长列的存储包括长度字节,这些字节计入行大小。例如,VARCHAR(255)字符集utf8mb3列需要两个字节来存储值的长度,因此每个值最多可以占用767个字节。”我并不是说utf8mb4总是使用4个字节,只是MySQL将其计为占用最大行大小的4个字节。

MySQL会抛出错误,不允许您创建/更改具有两个VARCHAR(65535)列的表。它会显示类似于“行大小过大”的错误消息。

0
0 Comments

创建用于游戏市场的数据库的原因是需要存储不同游戏的相关信息和数据。解决方法是使用适当的数据类型来存储不同长度的字符串,并根据需要创建索引。

在MySQL中,可以使用两种数据类型来存储字符串:TEXT和VARCHAR。TEXT数据类型具有固定的最大长度为65535个字符,而VARCHAR数据类型具有可变的最大长度。对于需要索引的列,必须使用VARCHAR数据类型。此外,如果知道输入字符串的最大长度,则可以使用VARCHAR来限制存储的字符数。

需要注意的是,无论是TEXT还是VARCHAR,所需的磁盘空间仅取决于存储的字符串长度,而不是最大长度。此外,如果存储的文本超过65535个字符,则需要使用MEDIUMTEXT或LONGTEXT数据类型。

总之,创建用于游戏市场的数据库时,需要考虑存储不同长度字符串的需求,并选择适当的数据类型和索引策略来优化性能和存储空间的使用。

以上是关于创建用于游戏市场的数据库的原因和解决方法的整理。

0