分区合并
Vertica 将来自不同表分区或分区组的数据在磁盘上分开保存。Tuple Mover 在整合 ROS 容器时遵循此分离策略。首次创建某个分区时,它通常会频繁加载数据,而且需要 Tuple Mover 的定期活动。随着分区的老化,它通常会转变为一个基本上只读的工作负载,并且需要的活动要少得多。
Tuple Mover 有两个不同的策略,用于管理这些不同的分区工作负载:
-
活动分区是最近创建的分区。Tuple Mover 使用基于层的算法,旨在最大限度减少各个元组进行合并的次数。表的活动分区计数确定该表有多少个处于活动状态的分区。
-
非活动分区是指那些不是最近创建的分区。Tuple Mover 将 ROS 容器整合至极小集,同时避免合并大小超过
MaxMrgOutROSSizeMB
的容器。
有关 Tuple Mover 如何确定活动分区的详细信息,请参阅活动和非活动分区。
分区合并线程分配
TM 资源池使用其 MAXCONCURRENCY 参数设置可用于合并的线程数。默认情况下,此参数设置为 7。Vertica 将一半线程分配给活动分区,其余一半分配给活动和非活动分区。如果 MAXCONCURRENCY 设置为奇整数,Vertica 会向上舍入以支持处于活动状态的分区。
例如,如果 MAXCONCURRENCY 设置为 7,则 Vertica 会将四个线程专门分配给活动分区,并根据需要将其余的三个线程分配给活动和非活动分区。如果需要额外的线程来避免 ROS 推回,请使用 ALTER RESOURCE POOL 增加 MAXCONCURRENCY。