管理 Tuple Mover
Tuple Mover 已预先配置为处理典型的工作负载。但是,某些情况可能需要您调整 Tuple Mover 行为。您可以通过多种方式执行此操作:
-
[配置 TM 资源池](#Configur)。
配置 TM 资源池
Tuple Mover 使用内置的 TM 资源池来处理其工作负载。可以调整此资源池的几个设置以方便处理大量负载:
MEMORYSIZE
指定为每个节点的 TM 池保留多少内存。TM 池可以通过从 GENERAL 池中借用内存而超过这个下限。默认情况下,此参数设置为可用内存的 5%。如果 GENERAL 资源池的 MEMORYSIZE 也设置为一定的百分比,则 TM 池会与 GENERAL 池争用内存。此值必须始终小于或等于 MAXMEMORYSIZE 设置。
当心
将 MEMORYSIZE 增加到很大的百分比可能会导致在 GENERAL 池中运行的内存敏感型查询出现回归。MAXMEMORYSIZE
设置可分配给 TM 池的内存上限。TM 池可以通过从 GENERAL 池中借用内存而超过由 MEMORYSIZE 设置的值。此值必须始终等于或大于 MEMORYSIZE 设置。
在 Eon 模式数据库中,如果在子群集级别将此值设置为 0,则 Tuple Mover 在子群集上处于禁用状态。
MAXCONCURRENCY
在所有节点上设置 TM 池可用的最大并发执行槽数。在 Vertica ≥9.3 版本中创建的数据库中,默认值为 7。在早期版本中创建的数据库中,默认值为 3。此设置指定可以在多个线程上同时发生的最大合并数。
PLANNEDCONCURRENCY
指定要在资源池中跨所有节点并发执行的查询的首选数量,默认设置为 6。资源管理器使用 PLANNEDCONCURRENCY 来计算对于给定查询可用的目标内存:
TM-memory-size / PLANNEDCONCURRENCY
对于 TM 池,PLANNEDCONCURRENCY 设置必须与 RAM、CPU 和存储子系统的大小成比例。根据存储类型的不同,如果增加 Tuple Mover 线程的 PLANNEDCONCURRENCY,可能会产生存储 I/O 瓶颈。监控存储子系统;如果其充满长 I/O 队列、多于 2 个 I/O 队列以及读写延迟时间长,请调整 PLANNEDCONCURRENCY 参数以使存储子系统资源保持在饱和级别以下。
管理处于活动状态的数据分区
Tuple Mover 假定分区表的所有加载和更新都是针对一个或多个标识为活动的分区。通常,具有最大分区键的分区(通常是最近创建的分区)均视为活动分区。随着分区的老化,其工作负载通常会缩小,并大多变为只读状态。
您可以按优先级的升序指定两个级别的分区表的活动分区数:
-
配置参数 ActivePartitionCount 将确定数据库中分区表的活动分区数。默认情况下,ActivePartitionCount 设置为 1。Tuple Mover 会将此设置应用于自身未设置活动分区计数的所有表。
-
通过使用 CREATE TABLE 和 ALTER TABLE 设置各个表自身的活动分区计数,可以取代各个表的 ActivePartitionCount。
有关详细信息,请参阅活动和非活动分区。