【发布时间】:2020-03-12 22:20:59
【问题描述】:
在 Oracle sql 数据库中,我们系统中的一个进程从表中删除(未截断)大约 200 万行。这导致大量“浪费的行”导致在该表上运行的查询需要超过 9 个小时,通常在 5 分钟内结束。经过检查,我们发现实际行数的大小约为 2600MB,而包括“浪费的行”在内的整个表的大小为 3700MB。
请让我知道删除行然后摆脱“浪费的行”的最佳方法是什么,这样我们就不必每次都重建表。
【问题讨论】:
-
从技术上讲,这不是
wasted rows,而是一个可以在进一步插入中重复使用的可用空间。您可以通过使用ALTER TABLE xxx MOVE重新组织表来回收此空间。根据您对查询行为的描述,我建议进一步调查execution plan,因为除了可用空间之外,它很可能还有其他问题。
标签: sql oracle sql-delete purge