在oracle中进行大量删除后回收空间

时间:2012-02-24 14:36:24

标签: oracle

在我的应用程序中,我们上传了大量数据。如果任何错误上传的数据,那么我们可以删除数据。那么,什么数据删除该空间何时将回收数据?。是否有任何影响性能是否有回收在oracle中大量删除后的空格?。如何回收空间?

4 个答案:

答案 0 :(得分:14)

在Oracle中,删除数据不会自动回收磁盘空间。数据库将保留其存储,直到您对表空间执行某些管理。这种行为的期望是,如果你一次需要存储,你可能会再次需要它,因此简单地保持分配会更有效。

就性能影响而言,处理的数据越少,查询速度越快。 :)

要回收空间,您有几个选择。 This article from ORACLE-BASE对这种情况有一个非常全面的了解。

另外,为什么要插入数据,然后确定它是“坏”然后删除它?你不想避免从一开始就把数据放进去吗?

答案 1 :(得分:3)

您需要研究High Water Mark(HWM)。

基本上它是特定表所使用的最大块数,如果加载大量数据,则可能会增加HWM,删除那些记录则不会减少HWM。

Here是关于如何调整HWM的精彩文章,如果您理解它,您认为它可能会影响您的环境,那么请使用附带的提示来减少您的HWM。

希望它有所帮助...

答案 2 :(得分:0)

删除后无法回收空间。但如果删除后剩余数据的大小相对较小,则创建一个包含数据的新表,删除旧表并将新表重命名为旧名称

答案 3 :(得分:0)

我知道这是一个老问题,但是为了将来的参考:

  • 删除空表,但空格已经被锁定"未来的馅料
  • TRUNCATE TABLE执行操作(您需要禁用所有引用该表的外键才能工作)。