gpt4 book ai didi

mysql - 被删除的行占用的空间会被重新使用吗?

转载 作者:IT老高 更新时间:2023-10-28 23:47:44 26 4
gpt4 key购买 nike

我已经读过好几次了,在 MySQL 中删除 InnoDB 表中的一行后,它的空间没有被重用,所以如果你在表中进行大量 INSERT,然后定期 DELETE 一些行,该表将使用更多和磁盘上有更多空间,就好像这些行根本没有被删除一样。

最近有人告诉我,虽然被删除的行占用的空间会被重新使用,但只有在某些事务完成之后才会重新使用,即使那样 - 不完全。我现在很困惑。

有人能帮我解释一下吗?我需要在 InnoDB 表中执行大量 INSERT,然后每 X 分钟我需要删除超过 Y 分钟的记录。我在这里遇到了不断增长的 InnoDB 表的问题,还是偏执狂?

最佳答案

这是偏执狂:)

DB 的大小不会不必要地增长,但出于性能问题,也不会释放空间。

您最可能听到的是,如果您删除记录,则空间不会返回操作系统。相反,它被保留为一个空白空间,供数据库以后重复使用。

这是因为:

  • DB 需要有一些 HD 空间来保存其数据;如果没有空间,则先保留一些空间。
  • 当您插入新行时,会使用该空间的一部分。
  • 当您用完可用空间时,会保留一个新 block ,依此类推。
  • 现在,当你删除一些行时,为了防止保留越来越多的 block ,它的空间是空闲的,但永远不会归还给操作系统,所以你以后可以再次使用它而不用保留新区 block 的任何需要。

如您所见,空间重复使用,但从未归还。这是你问题的关键。

关于mysql - 被删除的行占用的空间会被重新使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/634257/

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