刷新投影
当为已包含数据的表创建投影时,Vertica 不会自动将该数据加载到新投影中。相反,您必须显式刷新该投影。在执行此操作之前,投影无法参与对其锚表执行查询。
可以使用以下函数之一刷新投影:
-
START_REFRESH 使用各自 锚表的最新数据刷新当前架构中的投影。START_REFRESH 会在后台异步运行。
-
REFRESH 会在前台同步刷新一个或多个表投影。
这两个函数都会更新维护有关投影刷新状态的信息的系统表:PROJECTION_REFRESHES、PROJECTIONS 和 PROJECTION_CHECKPOINT_EPOCHS。
如果刷新会违反表或架构磁盘配额,则操作将失败。有关详细信息,请参阅磁盘配额。
获取投影刷新信息
可以查询 PROJECTION_REFRESHES 和 PROJECTIONS 系统表来查看刷新操作的进度。还可以调用 GET_PROJECTIONS 函数来查看给定表的投影刷新的最终状态:
=> SELECT GET_PROJECTIONS('customer_dimension');
GET_PROJECTIONS
----------------------------------------------------------------------------------------------------------
Current system K is 1.
# of Nodes: 3.
Table public.customer_dimension has 2 projections.
Projection Name: [Segmented] [Seg Cols] [# of Buddies] [Buddy Projections] [Safe] [UptoDate] [Stats]
----------------------------------------------------------------------------------------------------
public.customer_dimension_b1 [Segmented: Yes] [Seg Cols: "public.customer_dimension.customer_key"] [K: 1]
[public.customer_dimension_b0] [Safe: Yes] [UptoDate: Yes] [Stats: RowCounts]
public.customer_dimension_b0 [Segmented: Yes] [Seg Cols: "public.customer_dimension.customer_key"] [K: 1]
[public.customer_dimension_b1] [Safe: Yes] [UptoDate: Yes] [Stats: RowCounts]
(1 row)
刷新方法
Vertica 可以刷新其伙伴实例之一中的投影(如有)。在这种情况下,目标投影将获取源伙伴实例的历史数据。否则,将使用刷新操作时的最新时期数据从头开始刷新投影。在这种情况下,投影不能参与刷新操作之前的任何时期的历史查询。
要确定用来刷新给定投影的方法,请查询 PROJECTION_REFRESHES 系统表中的 REFRESH_METHOD 列。