【发布时间】:2012-02-24 14:36:23
【问题描述】:
在我的应用程序中,我们上传了大量数据。如果有任何错误上传的数据,那么我们可以删除数据。那么,无论什么数据删除了那个空间,什么时候会回收数据?对性能有什么影响吗?无论如何要回收oracle大删除后的空间?如何回收空间?
【问题讨论】:
标签: oracle
在我的应用程序中,我们上传了大量数据。如果有任何错误上传的数据,那么我们可以删除数据。那么,无论什么数据删除了那个空间,什么时候会回收数据?对性能有什么影响吗?无论如何要回收oracle大删除后的空间?如何回收空间?
【问题讨论】:
标签: oracle
在 Oracle 中,删除数据不会自动回收磁盘空间。数据库将保留其存储空间,直到您对表空间进行操作。这种行为的预期是,如果您一次需要存储,您可能会再次需要它,因此简单地保留分配会更有效。
就性能影响而言,要处理的数据越少,通常查询速度就越快。 :)
要回收空间,您有几个选择。 This article from ORACLE-BASE 对这种情况有相当全面的了解。
另外,你为什么要插入数据,然后确定它是“坏的”然后删除它?避免从一开始就输入数据不是更好吗?
【讨论】:
您需要研究High Water Mark (HWM)。
基本上它是特定表曾经使用过的最大块数,如果您加载大量数据,您可能会增加 HWM,删除这些记录不会减少 HWM。
Here 是一篇很棒的文章,介绍了如何调整 HWM,如果您理解它后认为它可能会影响您的环境,那么请使用包含的提示来降低您的 HWM。
希望对你有帮助...
【讨论】:
删除后无法回收空间。但是如果删除后剩余数据的大小相对较小,那么用数据创建一个新表,删除旧表并将新表重命名为旧名称
【讨论】:
我知道这是一个老问题,但供将来参考:
【讨论】: