跳至内容

为什么我的 Amazon Redshift 集群的实体化视图没有刷新?

2 分钟阅读
0

我的 Amazon Redshift 集群的实体化视图没有刷新。

简短描述

在 Amazon Redshift 中,以下场景会阻止实体化视图刷新或导致其完成时间过长:

  • 权限错误会阻止 REFRESH MATERIALIZED VIEW 操作。
  • 基表上并发执行的 VACUUMTRUNCATE 操作会阻止刷新并返回以下错误: “Invalid operation: Materialized view mv_name could not be refreshed as a base table changed physically due to vacuum/truncate concurrently.Please try again”。
  • REFRESH MATERIALIZED VIEW 无法刷新。
  • 活动工作负载会阻止自动刷新活动。

解决方法

**注意:**对于 Amazon Redshift Serverless 集群,请使用 SYS 监控视图,而不是预置集群中使用的系统视图(STL、STV、SVL、SVV)。有关详细信息,请参阅用于迁移到 SYS 监控视图的系统视图映射

REFRESH MATERIALIZED VIEW 权限错误

要对实体化视图执行 REFRESH MATERIALIZED VIEW 操作,您必须是所有者。您还必须对基础基表拥有 SELECT 权限,对架构拥有 USAGE 权限。

要进行完全的重新计算操作,您必须对架构拥有 CREATE 权限。有关如何定义权限的详细信息,请参阅 GRANT

有关自动刷新的详细信息,请参阅自动刷新实体化视图

当提交 REFRESH MATERIALIZED VIEWVACUUM 以在基表上并发运行时,会出现以下错误: “Invalid operation: Materialized view mv_name could not be refreshed as a base table changed physically due to vacuum/truncate concurrently.Please try again;”。

操作完成后,请重新提交 REFRESH MATERIALIZED VIEW 命令。

REFRESH MATERIALIZED VIEW 刷新失败

以下操作可能会导致实体化视图刷新失败:

  • 您重命名或删除了某一列。
  • 您更改了某一列的类型。
  • 您更改了基表或架构的名称。

**注意:**在这些情况下,实体化视图可以查询,但无法刷新。即使该列未在实体化视图中使用,这些约束也适用。

错误消息示例:

  • Detail: Procedure <mv_sp_*****_2_1> does not exist.
  • column <column name> does not exist.
  • DETAIL: schema "<schema name>" does not exist.
  • ERROR: Materialized view <my name> is unrefreshable as a base table was renamed.

要查看实体化视图的刷新活动,请对 Amazon Redshift 预置集群使用 SVL_MV_REFRESH_STATUS,对 Amazon Redshift Serverless 集群使用 SYS_MV_REFRESH_HISTORY

要查找实体化视图中的数据是否过时并查看实体化视图的状态信息,请使用 STV_MV_INFOSYS_MV_STATESYS_MV_REFRESH_HISTORY

当实体化视图无法刷新时,请将其删除并重新创建以维护当前数据。

长时间运行的 REFRESH MATERIALIZED VIEW 操作

REFRESH MATERIALIZED VIEW 命令在集群上作为普通查询执行。

要验证查询执行情况,请执行以下操作:

要监控 REFRESH MATERIALIZED VIEW 操作,请使用以下系统视图:

  • 要查看数据库中表的任何当前更新,请使用 STV_LOCKS
  • 要查看 WLM 的服务类配置,请使用 STV_WLM_SERVICE_CLASS_CONFIG
  • 要确定实体化视图进行的是增量刷新还是完全刷新,请使用 SVL_MV_REFRESH_STATUS

如果您的 REFRESH MATERIALIZED VIEW 性能缓慢,请参阅查询性能改进

活动工作负载期间刷新状态已隐藏

Amazon Redshift 会优先考虑您的工作负载,而不是自动刷新。这种优先级排序可能会暂停自动刷新以维持工作负载的性能,并延迟对某些实体化视图的更新。在某些情况下,您的实体化视图可能需要更可预测的刷新行为。

要实现可预测的刷新行为,请执行以下操作:

  • 手动运行 REFRESH MATERIALIZED VIEW
  • 通过 Amazon Redshift 调度器 API 或控制台计划刷新。
AWS 官方已更新 8 个月前