管理时期
时期存储在时期映射中,这是一个编录对象,其中包含从 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_EPOCH、GET_AHM_TIME、GET_CURRENT_EPOCH 和 GET_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。
当心
您可以使用 MAKE_AHM_NOW、SET_AHM_EPOCH 或 SET_AHM_TIME 时期管理函数手动将 AHM 设置为特定时期。如果选择的时期晚于 DOWN 节点的 LGE,则节点必须在重启时从头开始恢复。 -
确认
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)