Amazon Redshift 叢集的具體化視觀表未重新整理。
簡短說明
以下情境可能會導致 Amazon Redshift 中的具體化視觀表重新整理失敗或耗時過長:
- 權限錯誤會導致無法執行 REFRESH MATERIALIZED VIEW 作業。
- 基礎資料表上同時執行的 VACUUM 和 TRUNCATE 作業會阻止重新整理,並傳回下列錯誤訊息: "Invalid operation: Materialized view mv_name could not be refreshed as a base table changed physically due to vacuum/truncate concurrently.Please try again". (無效作業:由於同時發生 vacuum/truncate,基礎資料表發生實體變更,因此無法重新整理具體化視觀表 mv_name。請再試一次。)
- 無法重新整理REFRESH MATERIALIZED VIEW。
- 作用中工作負載會阻止自動重新整理活動。
解決方法
**注意:**對於 Amazon Redshift Serverless 叢集,請使用 SYS 監控檢視,而不是佈建叢集中使用的系統檢視 (STL, STV, SVL, SVV)。如需詳細資訊,請參閱用於遷移到 SYS 監控檢視的系統檢視對應。
REFRESH MATERIALIZED VIEW 權限錯誤
若要對具體化視觀表執行 REFRESH MATERIALIZED VIEW 作業,您必須是其擁有者。您也必須擁有底層基礎資料表的 SELECT 權限以及結構描述的 USAGE 權限。
若要執行完整的重新運算作業,您必須擁有該結構描述的 CREATE 權限。如需如何定義權限的詳細資訊,請參閱 GRANT。
如需自動重新整理的詳細資訊,請參閱自動重新整理具體化視觀表。
在基礎資料表上同時提交 REFRESH MATERIALIZED VIEW 和 VACUUM 時,會出現下列錯誤: "Invalid operation: Materialized view mv_name could not be refreshed as a base table changed physically due to vacuum/truncate concurrently.Please try again". (無效作業:由於同時發生 vacuum/truncate,基礎資料表發生實體變更,因此無法重新整理具體化視觀表 mv_name。請再試一次。)
作業完成後,重新提交 REFRESH MATERIALIZED VIEW 命令。
REFRESH MATERIALIZED VIEW 重新整理失敗
以下作業可能會導致具體化視觀表重新整理失敗:
- 您重新命名或刪除了欄。
- 您變更了欄的類型。
- 您變更了基礎資料表或結構描述的名稱。
**注意:**在這些情況下,具體化視觀表仍可查詢,但無法重新整理。即使該欄未在具體化視觀表中使用,這些限制仍然適用。
錯誤訊息範例:
- 詳細資料: 程序 <mv_sp_*****_2_1> 不存在。
- 欄 <column name> 不存在。
- 詳細資訊:結構描述 "<schema name>" 不存在。
- 錯誤: 由於 <my name> 基礎資料表已重新命名,因此無法重新整理具體化視觀表。
若要查看具體化視觀表的重新整理活動,請對 Amazon Redshift 佈建叢集使用 SVL_MV_REFRESH_STATUS,或對 Amazon Redshift Serverless 叢集使用 SYS_MV_REFRESH_HISTORY。
若要找出具體化視觀表中的資料是否過時,以及查看具體化視觀表狀態資訊,請使用 STV_MV_INFO、SYS_MV_STATE 或 SYS_MV_REFRESH_HISTORY。
當具體化視觀表無法重新整理時,請刪除並重新建立具體化視觀表,以維護目前的資料。
長時間執行的 REFRESH MATERIALIZED VIEW 作業
REFRESH MATERIALIZED VIEW 命令作為叢集上的一般查詢執行。
若要確認查詢執行情況,請執行下列動作:
若要監控 REFRESH MATERIALIZED VIEW 作業,請使用下列系統檢視:
如果您的 REFRESH MATERIALIZED VIEW 效能較慢,請參閱查詢效能改善。
作用中工作負載期間隱藏重新整理狀態
Amazon Redshift 會優先處理工作負載,而不是自動重新整理。此優先順序會暫停自動重新整理,以維持您的工作負載效能,並可能導致某些具體化視觀表的更新延遲。某些情況可能需要對具體化視觀表進行較為可預測的重新整理行為。
若要促進可預測的重新整理行為,請執行以下動作:
- 手動執行 REFRESH MATERIALIZED VIEW。
- 透過 Amazon Redshift 排程器 API 或主控台排程重新整理。