当前位置:  开发笔记 > 后端 > 正文

删除的行占用的空间是否会被重用?

如何解决《删除的行占用的空间是否会被重用?》经验,为你挑选了1个好方法。

我已经多次读过你在MySQL中的InnoDB表中删除一行后,它的空间没有被重用,所以如果你把很多INSERT放到一个表中然后定期删除一些行,那么表将使用越来越多的空间磁盘,好像根本没有删除行.

最近我被告知,删除行占用的空间会被重用,但只有在某些事务完成后才会被重新使用 - 不完全.我现在很困惑.

有人可以帮我理解这个吗?我需要在InnoDB表中执行大量的INSERT,然后每隔X分钟我需要删除超过Y分钟的记录.我在这里有一个不断增长的InnoDB表的问题,还是偏执狂?



1> Seb..:

这是偏执狂:)

数据库的大小不会不必要地增加,但是对于性能问题,空间也没有被释放.

您最常听到的是,如果删除记录,则不会将空间返回给操作系统.相反,它被保留为一个空的空间供DB在之后重复使用.

这是因为:

数据库需要有一些高清空间来保存数据; 如果它没有任何空间,它首先会保留一些空的空间.

插入新行时,将使用该空间的一部分.

当用完可用空间时,会保留一个新块,依此类推.

现在,当您删除某些行时,为了防止保留越来越多的块,它的空间保持空闲但从未返回到操作系统,因此您可以在以后再次使用它而无需保留新块.

正如您所看到的,空间重用,但永远不会被回馈.这是你问题的关键点.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有