REFRESH
在前台同步刷新一个或多个表投影,并更新 PROJECTION_REFRESHES 系统表。如果在不使用实参的情况下运行 REFRESH,则它会刷新所有包含过时数据的投影。
有关投影刷新的详细信息,请参阅刷新投影。
如果刷新会违反表或架构磁盘配额,操作将失败。有关详细信息,请参阅磁盘配额。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
REFRESH ( [ '[[database.]schema.]table[,...]' ] )
参数
-
[database.]schema
数据库和架构。默认架构为
public
。如果指定一个数据库,它必须是当前数据库。- 表
- 要刷新的投影的锚表。如果指定多个表,REFRESH 会尝试并行刷新。此类调用将包含在 Database Designer 部署(和部署脚本)中。
返回
注意
如果 REFRESH 未刷新任何投影,则会返回不包含结果的标头字符串。Projection Name
- 作为刷新目标的投影。
Anchor Table
- 投影的关联锚表。
Status
- 投影的刷新状态:
-
queued
:排队等待刷新。 -
refreshing
:正在刷新。 -
refreshed
:已成功完成刷新。 -
failed
:未成功完成刷新。
-
Refresh Method
- 用于刷新投影的方法。
Error Count
- 投影刷新失败的次数。
Duration (sec)
- 投影刷新运行的时间(以秒为单位)。
特权
- 超级用户
-
指定表的所有者
刷新方法
Vertica 可以刷新其伙伴实例之一中的投影(如有)。在这种情况下,目标投影将获取源伙伴实例的历史数据。否则,将使用刷新操作时的最新时期数据从头开始刷新投影。在这种情况下,投影不能参与刷新操作之前的任何时期的历史查询。
要确定用来刷新给定投影的方法,请查询 PROJECTION_REFRESHES 系统表中的 REFRESH_METHOD 列。
示例
以下示例将刷新两个表中的投影:
=> SELECT REFRESH('t1, t2');
REFRESH
----------------------------------------------------------------------------------------
Refresh completed with the following outcomes:
Projection Name: [Anchor Table] [Status] [Refresh Method] [Error Count] [Duration (sec)]
----------------------------------------------------------------------------------------
"public"."t1_p": [t1] [refreshed] [scratch] [0] [0]"public"."t2_p": [t2] [refreshed] [scratch] [0] [0]
在以下示例中,仅刷新了一个表中的投影:
=> SELECT REFRESH('allow, public.deny, t');
REFRESH
----------------------------------------------------------------------------------------
Refresh completed with the following outcomes:
Projection Name: [Anchor Table] [Status] [Refresh Method] [Error Count] [Duration (sec)]
----------------------------------------------------------------------------------------
"n/a"."n/a": [n/a] [failed: insufficient permissions on table "allow"] [] [1] [0]
"n/a"."n/a": [n/a] [failed: insufficient permissions on table "public.deny"] [] [1] [0]
"public"."t_p1": [t] [refreshed] [scratch] [0] [0]