gpt4 book ai didi

mysql - 增加 varchar 长度会减少 MySQL 的大小吗?

转载 作者:行者123 更新时间:2023-11-29 12:55:31 27 4
gpt4 key购买 nike

我有一个大约有 100000 行的表。它有 62.6 MB,并且没有任何开销。我将 2 列从 varchar(255) 更改为 varchar(2047)。这些列用于 URL。更改后,表的行数仍然相同,但大小减少到 59.2 MB。

我很困惑为什么会发生这种情况。 varchar(2047) 不应该是相同大小或更大吗?有人可以解释为什么 varchar 长度的增加会导致尺寸变小吗?

最佳答案

VARCHAR 和 CHAR 差异

  • CHAR 长度是固定的。例如:CHAR(30) 意味着它将存储固定的 30 个字符,即使您插入一个value 为 10 个字符,它会尝试添加一些填充。

enter image descriptionhere

  • VARCHAR 是可变大小的长度。 VARCHAR(300) 表示最多存储 300 个字符。数据库没有为其保留300字节。它只会存储您输入的长度。

enter image description here

  • 当您更新具有更大长度的新值时,它将使用溢出指针。

enter image description here

尺寸减小

我不知道确切的原因,但这是我所相信的。

  • 当你删除一条记录时,MySQL并没有真正删除。它只是将记录标记为已删除,并在插入新数据时重复使用。
  • 已删除的记录通过链表(对于可变大小的记录)进行维护,以便可以快速找到已删除的记录以供重用。

enter image description here

  • 这意味着,当您删除数据时,数据库的大小仍保持不变,直到您运行 OPTIMIZE TABLE your_table_name 再次重新组织数据库。
  • 我认为导致大小减小的原因是当您更改表架构时,数据库将尝试再次重新组织数据库,以便不再删除数据或使用空间。

关于mysql - 增加 varchar 长度会减少 MySQL 的大小吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24112248/

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