我们有一些AO表(现在意思是“附加优化”,而不是“仅附加”)。通常情况下,我们只是插入这些表。
作为重大系统更改的一部分,我需要对这些表进行相当大的删除。它只占数据量的2%,并且只在很小的分区范围内。最终,这些分区将结束我们的保留策略。
我找不到任何关于在AO表上执行delete的结果的信息。
发布于 2016-11-25 14:45:08
堆表和AO表的主要区别在于可见性数据是如何存储的。在堆表可见性信息是每个记录的头,AO表有一个单独的可见性映射结构。
一旦在AO表上进行了更新或删除操作,就需要处理这个可见性映射。这将产生一个非常小的附加负荷读取地图和处理它。处理只是一个set/not检查,因此它比堆表上MVCC可见性的范围检查要轻得多。
如果删除一小部分行,则对扫描操作的影响将微乎其微。如果在有更新或删除操作的情况下关闭AO表,那么表将被压缩,这将创建大量的磁盘IO,可能需要相当大的空间。
https://dba.stackexchange.com/questions/152083
复制相似问题