暂停或恢复动态表¶
本主题讨论动态表自动暂停的原因以及如何手动暂停或恢复动态表。
自动动态表暂停¶
动态表将在连续 5 次计划刷新错误后自动暂停。成功刷新(包括手动刷新)会将错误计数重置为 0。例如,如果表连续两次计划刷新失败,然后在下一次刷新中成功,则错误计数将重置为 0。
手动触发的刷新产生的错误不计入此限制。
任何依赖于已暂停表的动态表也将被暂停。
您可以使用以下选项之一查看动态表的当前状态(ACTIVE 或 SUSPENDED):
执行 DYNAMIC_TABLE_GRAPH_HISTORY 表函数:
SELECT name, scheduling_state
FROM TABLE (INFORMATION_SCHEMA.DYNAMIC_TABLE_GRAPH_HISTORY());
在输出中,SCHEDULING_STATE
列显示动态表(ACTIVE 或 SUSPENDED)的状态:
+-------------------+---------------------------------------------------------------------------------+
| NAME | SCHEDULING_STATE |
|-------------------+---------------------------------------------------------------------------------|
| DTSIMPLE | { |
| | "reason_code": "SUSPENDED_DUE_TO_ERRORS", |
| | "reason_message": "The DT was suspended due to 5 consecutive refresh errors", |
| | "state": "SUSPENDED", |
| | "suspended_on": "2023-06-06 19:27:29.142 -0700" |
| | } |
| DT_TEST | { |
| | "state": "ACTIVE" |
| | } |
+-------------------+---------------------------------------------------------------------------------+
要查看动态表的状态,请登录 Snowsight。在导航菜单中,选择 Monitoring Dynamic Tables。
您可以在此页面上查看动态表的状态和上次刷新状态。您还可以按数据库或架构进行筛选以缩小结果范围。
手动暂停动态表¶
当您暂时不需要某个动态表时,可以手动将其暂停,以避免产生刷新成本。不必将其删除,可保留以供将来使用。暂停操作还可以帮助您更好地控制刷新频率,例如,当发生跳过操作时,您可能需要一些时间进行故障排除。
如果您希望确保在特定时间或特定事件发生时进行刷新,可以使用任务或定期运行的脚本来执行手动刷新,因为动态表无法保证精确的刷新时间。这样,您可以精确控制表的刷新。
您可以使用 ALTER DYNAMIC TABLE … SUSPEND 命令或 Snowsight 手动暂停动态表,但存在以下限制:
暂停动态表也会暂停所有依赖于该表的 下游 动态表。
如果在其基础表的 Time Travel 保留期之后暂停一个具有增量刷新模式的动态表,当该动态表恢复时,它将在下次刷新时失败。
ALTER DYNAMIC TABLE my_dynamic_table SUSPEND;
登录 Snowsight。
在导航中,转到 Monitoring » Dynamic Tables。
在弹出窗口中,确认要暂停的动态表。
恢复动态表¶
要恢复动态表,请使用 ALTER DYNAMIC TABLE ...RESUME 命令或 Snowsight。
ALTER DYNAMIC TABLE my_dynamic_table RESUME;
登录 Snowsight。
在导航中,转到 Monitoring » Dynamic Tables。
在弹出窗口中,确认要恢复的动态表。