選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

RLS 效能的最佳實務 - Amazon Redshift

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

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

RLS 效能的最佳實務

以下最佳實務可確保 Amazon Redshift 在受 RLS 保護的資料表上獲得更好的效能。

運算子和函數的安全性

查詢受 RLS 保護的資料表時,使用某些運算子或函數可能會導致效能降低。Amazon Redshift 會將運算子和函數分類為在查詢受 RLS 保護的資料表時是安全或不安全的。當函數或運算子沒有因為輸入而有任何可觀察到的副作用時,函數或運算子就會被歸類為 RLS 安全。特別是,RLS 安全函數或運算子不能是以下其中一項:

  • 輸出一個輸入值,或任何依賴於輸入值的值,無論有沒有錯誤訊息。

  • 失敗或傳回依賴於輸入值的錯誤。

RLS 不安全的運算子包括:

  • 算術運算子 — +、-、/、*、%。

  • 文字運算子 — LIKE 和 SIMILAR TO。

  • 轉換運算子。

  • UDF。

使用下列 SELECT 陳述式來檢查運算子和函數的安全性。

SELECT proname, proc_is_rls_safe(oid) FROM pg_proc;

在受 RLS 保護的資料表上規劃查詢時,Amazon Redshift 會對包含 RLS 不安全運算子和函數的使用者述詞的評估順序施加限制。查詢受 RLS 保護的資料表時,參照 RLS 不安全運算子或函數的查詢可能會導致效能降低。當 Amazon Redshift 無法將 RLS 不安全述詞推送至基底資料表掃描以利用排序索引鍵時,效能可能會大幅降低。為了獲得更好的效能,請避免使用利用排序索引鍵的 RLS 不安全述詞進行查詢。若要確認 Amazon Redshift 能夠向下推送運算子和函數,您可以將 EXPLAIN 陳述式與系統許可 EXPLACE RLS 結合使用。

結果快取

為了縮短查詢執行期並改善系統效能,Amazon Redshift 會將特定查詢類型的結果快取在領導者節點的記憶體中。

當未受保護資料表的所有條件皆成立,且下列所有條件皆成立時,Amazon Redshift 會在新查詢掃描受 RLS 保護的資料表時使用快取結果:

  • 政策中的資料表或檢視尚未經過修改。

  • 政策並未使用每次執行時都必須求值的函數,例如 GETDATE 或 CURRENT_USER。

為了獲得更好的效能,請避免使用不符合前述條件的政策述詞。

如需 Amazon Redshift 中結果快取的詳細資訊,請參閱 結果快取

複雜政策

為了獲得更好的效能,請避免在聯結多個資料表的子查詢中使用複雜的政策。

下一個主題:

端對端範例

上一個主題:

考量與限制
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。