我们可以通过使用oracle中的Gather统计信息来减少高水位线吗?

时间:2018-10-25 08:29:21

标签: oracle

我对oracle非常陌生,下面有查询。

我有一张桌子,上面有近6个L记录。 在日常批处理中,我需要删除将近5.7 L的记录,然后从另一个表中再次插入。请注意,我不能使用截断表,因为30000条记录是不变的,我不应该删除它。 这里的问题是,如果我每天删除5.67 L记录,可能会导致高水印问题。

所以我的查询是收集统计信息可以帮助减少HWM吗? 我可以做Oracle Gather Stats Daily。

2 个答案:

答案 0 :(得分:1)

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

话虽如此,如果数据发生了重大变化,最好收集统计信息,因此,我建议这样做。

答案 1 :(得分:1)

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

alter table your_table shrink space;

但是,只有在需要时才应该这样做。就您而言,似乎只有在使用/* APPEND */提示插入567,000条记录的情况下,才需要这样做。此提示告诉优化器在HWM上方插入记录,这在您的方案中将导致表增长,并且具有大量的空白空间。在这里缩小肯定是有用的。

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


顺便说一句,每天删除并重新插入5.67L记录听起来是很差的做法。可能有更好的解决方案(例如MERGE),具体取决于您要满足的基本业务规则。