管理时期

时期存储在时期映射中,这是一个编录对象,其中包含从 Ancient History Mark (AHM) 时期开始到最新时期 (LE) 结束的封闭时期列表。时期映射越大,编录使用的内存越大。此外,AHM 用于确定从磁盘清除哪些数据。为了优化数据库性能,一定要监控数据库时期以验证它们是否正确前进。

监控时期

当 Vertica 使用默认 Vertica 设置正常运行时,Ancient History Mark、上一个完好的时期 (LGE) 和检查点时期(CPE,仅限企业模式)等于最新时期,或比当前时期小 1。这将确保不使用磁盘空间来存储符合清除条件的数据,从而保持对时期映射和编录大小的控制。SYSTEM 系统表存储当前时期、上一个完好的时期和 Ancient History Mark:

=> SELECT CURRENT_EPOCH, LAST_GOOD_EPOCH, AHM_EPOCH FROM SYSTEM;
 CURRENT_EPOCH | LAST_GOOD_EPOCH | AHM_EPOCH
---------------+-----------------+-----------
            88 |              87 |        87
(1 row)

Vertica 提供 GET_AHM_EPOCHGET_AHM_TIMEGET_CURRENT_EPOCHGET_LAST_GOOD_EPOCH 来单独检索这些时期。

在企业模式下,您可以使用 PROJECTION_CHECKPOINT_EPOCHS 表查询检查点时期,以返回群集中每个节点的检查点时期。以下查询返回用来存储 orders 投影的任何节点的 CPE:

=> SELECT checkpoint_epoch, node_name, projection_name
     FROM PROJECTION_CHECKPOINT_EPOCHS WHERE projection_name ILIKE 'orders_b%';
 checkpoint_epoch |    node_name     | projection_name
------------------+------------------+-----------------
               87 | v_vmart_node0001 | orders_b1
               87 | v_vmart_node0001 | orders_b0
               87 | v_vmart_node0003 | orders_b1
               87 | v_vmart_node0003 | orders_b0
               87 | v_vmart_node0002 | orders_b0
               87 | v_vmart_node0002 | orders_b1
(6 rows)

对 Ancient History Mark 进行故障排除

正常运行的 AHM 对于确定数据库利用磁盘空间和执行查询的优度至关重要。当您提交 DELETE 或 UPDATE(DELETE 和 INSERT 的组合)操作时,数据不会立即从磁盘中删除。相反,Vertica 会将数据标记为删除,因此您可以使用历史查询来检索它。删除的数据会占用磁盘空间并影响查询性能,因为 Vertica 在非历史查询期间必须读取删除的数据。

时期会随着您提交数据而前进,并且标记为删除的任何数据都会在其时期超越 AHM 时由 Tuple Mover 合并过程自动清除。您可以创建自动清除策略或手动清除在 AHM 之前的时期中提交的任何已删除数据。有关其他信息,请参阅设置清除策略

默认情况下,AHM 每 180 秒前进一次,直到等于 LGE。监控 SYSTEM 系统表以确保 AHM 正在以正确方式前进:

=> SELECT CURRENT_EPOCH, LAST_GOOD_EPOCH, AHM_EPOCH FROM SYSTEM;
 CURRENT_EPOCH | LAST_GOOD_EPOCH | AHM_EPOCH
---------------+-----------------+-----------
            94 |              93 |        86
(1 row)

如果您注意到 AHM 未正确前进,可能是由于下面的一种或多种原因:

  • 您的数据库包含未刷新的投影。当您为已经包含数据的表创建投影时,便会发生这种情况。有关如何刷新投影的详细信息,请参阅刷新投影

  • 节点处于 DOWN 状态。当节点处于 DOWN 状态时,AHM 不能前进。有关如何解决此问题的信息,请参阅在主机上重新启动 Vertica

  • 确认 AHMBackupManagement 时期参数设置为 0。如果此参数设置为 1,则 AHM 不会超越最近的完整备份:

    => SELECT node_name, parameter_name, current_value FROM CONFIGURATION_PARAMETERS WHERE parameter_name='AHMBackupManagement';
     node_name |   parameter_name    | current_value
    -----------+---------------------+---------------
     ALL       | AHMBackupManagement | 0
    (1 row)