配置时期

时期配置会影响数据库如何从故障中恢复、处理历史数据以及从磁盘中清除数据。Vertica 为系统范围的时期配置提供时期管理参数时期管理函数使您能够对时期值进行临时调整。

历史查询与恢复精度

当您执行历史查询时,Vertica 在由 EpochMapInterval 配置参数指定的时间内返回一个时期。例如,当您使用 AT TIME time 时期子句执行历史查询时,Vertica 在由该参数设置指定的时间内返回一个时期。默认情况下,EpochMapInterval 设置为 180 秒。您必须将 EpochMapInterval 设置为大于或等于 AdvanceAHMInterval 参数的值:

=> SELECT node_name, parameter_name, current_value FROM CONFIGURATION_PARAMETERS
     WHERE parameter_name='EpochMapInterval' OR parameter_name='AdvanceAHMInterval';
 node_name |   parameter_name   | current_value
-----------+--------------------+---------------
 ALL       | EpochMapInterval   | 180
 ALL       | AdvanceAHMInterval | 180
(2 rows)

故障恢复期间,Vertica 使用 EpochMapInterval 设置来确定将哪个时期报告为上一个完好的时期 (LGE)。

历史记录保留和清除工作流

Vertica 建议您配置时期参数以创建清除策略,从而确定何时从磁盘清除已删除的数据。如果您经常使用历史查询,那么您需要在保存已删除的历史数据和从磁盘中清除历史数据之间找到一个平衡点。主动清除策略会提高磁盘利用率和查询性能,但也会限制您的恢复选项并缩小可用于历史查询的数据时段。

可通过以下两种战略来创建清除策略:

  • 设置 HistoryRetentionTime 以指定已删除数据作为历史参考保存的时间长度(以秒为单位)。

  • 设置 HistoryRetentionEpochs 以指定要保存的历史时期数。

有关配置每个工作流的详细信息,请参阅设置清除策略

设置 HistoryRetentionTime 是创建清除策略的首选方法。默认情况下,Vertica 将此值设置为 0,因此当数据库正常运行时,AHM 比当前时期小 1。您无法针对 AHM 之前的时期执行历史查询,因此您可能需要调整此设置才能在当前时间和 AHM 之间保存更多数据。调整此参数的另一个原因是,如果您使用将数据库回退至上一个完好的时期 (Roll Back Database to Last Good Epoch) 选项进行手动回退。例如,以下命令将 HistoryRetentionTime 设置为 1 天(以秒为单位)以提供更广泛的时期回退选项:

=> ALTER DATABASE vmart SET HistoryRetentionTime = 86400;

Vertica 使用 AdvanceAHMInterval 设置检查您的保留设置的状态,并根据需要使 AHM 前进。在 AHM 前进后,Tuple Mover 合并过程会自动清除在早于 AHM 的时期中删除的所有数据。

如果要禁用任何清除策略并保留所有历史数据,请将 HistoryRetentionTimeHistoryRetentionEpochs 设置为 -1

=> ALTER DABABASE vmart SET HistoryRetentionTime = -1;
=> ALTER DATABASE vmart SET HistoryRetentionEpochs = -1;

如果未设置清除策略,则可以使用时期管理函数来调整 AHM 以根据需要手动清除已删除的数据。如果您需要更新或删除错误上传的数据,手动清除非常有用。有关详细信息,请参阅手动清除数据