时期

时期代表数据库中历史数据的一个截止点。给定时期内所有提交的时间戳等于或小于该时期的时间戳。当您需要执行以下操作时,了解时期很有用:

  • 数据库恢复Vertica 使用时期来确定上次数据在数据库群集中的所有节点之间保持一致的时间。

  • 执行历史查询:包括 AT epoch 子句的 SELECT 语句仅返回在指定时期或之前提交的数据。

  • 清除删除的数据:删除的数据在从数据库中清除之前不会从物理存储中移除。删除的数据只有在早于 Ancient History Mark (AHM) 时期时才能从数据库中清除。

Vertica 有一个开放时期和任意数量的封闭时期,具体取决于您的系统配置。新的和更新的数据被写入开放时期,每个封闭时期代表一个对数据库的先前提交。当使用 DML 操作(INSERT、UPDATE、MERGE、COPY 或 DELETE)提交数据时,Vertica 会写入数据,关闭开放时期,然后打开一个新时期。提交到数据库的每一行都与写入它的时期相关联。

EPOCHS 系统表包含有关每个可用封闭时期的信息。epoch_close_time 列存储提交日期和时间。epoch_number 列存储对应的时期编号:

=> SELECT * FROM EPOCHS;
       epoch_close_time        | epoch_number
-------------------------------+--------------
 2020-07-27 14:29:49.687106-04 |           91
 2020-07-28 12:51:53.291795-04 |           92
(2 rows)

时期里程碑

随着时期在其生命周期中向前推移,它达到里程碑,Vertica 使用里程碑来执行各种操作并维护数据库的状态。下图大致描述了时期生命周期中的里程碑:

Vertica 对每个里程碑的定义如下:

  • 当前时期 (CE):您当前正在向其中写入数据的当前开放时期。

  • 最新时期 (LE):最近封闭的时期。

  • 检查点时期:仅限 Enterprise 模式。节点级别的最新时期,在该时期内,数据在该节点上的所有投影之间保持一致。

  • 上一个完好的时期 (LGE):数据在所有节点之间保持一致的最小检查点时期。

  • Ancient history mark (AHM):包含历史查询可访问的数据的最旧时期。

有关每个阶段的详细信息,请参阅时期生命周期