我们可以通过在预言机中使用收集统计数据来减少高水位线吗?



我对oracle很陌生,我有以下查询。

我有一张桌子,有近 6 L 条记录。 在日常批次中,我需要删除几乎 5.7 L 记录并从另一个表中再次插入。请注意,我不能使用截断表,因为 30000 条记录是我不应该删除的常量记录。 这里的问题是,如果我删除每日 5.67 L 记录,可能会导致高水位标记问题。

所以我的问题是收集统计数据可以帮助减少 HWM 吗? 我可以每天做甲骨文收集统计数据。

您可以使用 SHRINK 命令恢复空间并重置高水位线:

alter table your_table shrink space;

但是,仅在需要时才应执行此操作。在您的情况下,如果您使用/* APPEND */提示插入 567,000 条记录,则似乎只需要执行此操作;此提示告知优化程序在 HWM 上方插入记录,在您的方案中,这会导致表增长,并具有大量空白空间。收缩在这里肯定很有用。

如果您只是插入没有提示的记录,那么它们将主要重用先前删除时腾出的空白空间,因此您无需担心 HWM。


顺便说一下,每天删除和重新插入 5.67L 记录听起来很糟糕。可能有更好的解决方案(例如 MERGE(,具体取决于您尝试满足的基础业务规则。

如果重新插入相同数量的数据,则表的大小应大致相同。因此,我不会太担心高水位线。

话虽如此,如果数据发生了重大变化,收集统计数据是一种很好的做法,所以我建议这样做。

最新更新