自動查詢重寫以使用具體化視檢視 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

自動查詢重寫以使用具體化視檢視

您可以使用 Amazon Redshift 中具體化視觀表的自動查詢重寫功能,讓 Amazon Redshift 重寫查詢以使用具體化視觀表。這樣做可以加速查詢工作負載,即使是未明確參考具體化視觀表的查詢也一樣。當 Amazon Redshift 重寫查詢時,其只會使用最新的具體化視觀表。

使用須知

若要檢查查詢是否使用自動重寫,您可以檢查查詢計畫或 STL_EXPLAIN。以下顯示陳述SELECT式和原始查詢計畫的EXPLAIN輸出。

SELECT catgroup, SUM(qtysold) AS sold FROM category c, event e, sales s WHERE c.catid = e.catid AND e.eventid = s.eventid GROUP BY 1; EXPLAIN XN HashAggregate (cost=920021.24..920021.24 rows=1 width=35) -> XN Hash Join DS_BCAST_INNER (cost=440004.53..920021.22 rows=4 width=35) Hash Cond: ("outer".eventid = "inner".eventid) -> XN Seq Scan on sales s (cost=0.00..7.40 rows=740 width=6) -> XN Hash (cost=440004.52..440004.52 rows=1 width=37) -> XN Hash Join DS_BCAST_INNER (cost=0.01..440004.52 rows=1 width=37) Hash Cond: ("outer".catid = "inner".catid) -> XN Seq Scan on event e (cost=0.00..2.00 rows=200 width=6) -> XN Hash (cost=0.01..0.01 rows=1 width=35) -> XN Seq Scan on category c (cost=0.00..0.01 rows=1 width=35)

以下顯示成功自動重寫後的EXPLAIN輸出。此輸出包括查詢計劃中具體化視觀表的掃描,其取代了原始查詢計劃的一部分。

* EXPLAIN XN HashAggregate (cost=11.85..12.35 rows=200 width=41) -> XN Seq Scan on mv_tbl__tickets_mv__0 derived_table1 (cost=0.00..7.90 rows=790 width=41)

無論重新整理策略為何,例如自動、排程或手動,都 up-to-date只會考慮自動重寫查詢的 (全新) 具體化檢視。因此,原始查詢會傳回 up-to-date結果。在查詢中明確參照具體化視觀表時,Amazon Redshift 會存取具體化視觀表中目前儲存的資料。此資料可能不會反映具體化視觀表之基礎資料表的最新變更。

您可以使用在叢集 1.0.20949 版或更新版本上建立的具體化視觀表自動查詢重寫功能。

您可以使用 SET mv_enable_aqmv_for_session 來停止工作階段層級的自動查詢重寫FALSE。

限制

以下是針對具體化視觀表使用自動查詢重寫的限制。

  • 自動查詢重寫適用於不參照或包含下列任何項目的具體化視觀表:

    • 子查詢

    • 左側、右側或完整外部聯結

    • 設定操作

    • 任何彙總函數,除了 SUM、COUNT、MAX、 MIN和 AVG。(這些是唯一可與自動查詢重寫搭配使用的彙總函數。)

    • 具有 的任何彙總函數 DISTINCT

    • 任何範圍函數

    • SELECT DISTINCT 或 HAVING子句

    • 外部資料表

    • 其他具體化視觀表

  • 自動查詢重寫會重寫參考使用者定義 Amazon Redshift 資料表的SELECT查詢。Amazon Redshift 不會重寫以下查詢:

    • CREATE TABLE AS 陳述式

    • SELECT INTO 陳述式

    • 目錄或系統資料表的查詢

    • 具有外部聯結或SELECTDISTINCT子句的查詢

  • 如果查詢未自動重寫,請檢查您是否具有指定具體化檢視的SELECT許可,且mv_enable_aqmv_for_session選項設定為 TRUE。

    您也可以檢查 STV_MV_,檢查具體化檢視是否符合自動重寫查詢的資格INFO。如需詳細資訊,請參閱STV_ MV_ INFO