Redshift

紅移隊列

  • July 6, 2019

我是 RedShift 的新手,正在嘗試調試為什麼我們的系統執行緩慢。我注意到我們有大約 50 個使用者和數百份每日報告在執行,所有這些都需要大量的執行時間。我相信問題的一部分在於執行並發查詢過多並減慢系統的問題。

我想優化排隊系統,以便某些使用者/應用程序優先,而很少執行的低優先級報告將進入不同的隊列。

如何查看目前隊列並設置新隊列?此外,是否可以將單個使用者限制在特定隊列中,以便他們執行的每個查詢都在該特定隊列中?謝謝。

Amazon專門為此任務提供了WLM(工作負載管理) 。

這允許您分配記憶體和其他資源,例如設置並發、設置超時值等。如果您有權訪問 AWS Redshift 控制台,您可以輕鬆地將參數組分配給集群,然後瀏覽 Parameter Groups > WLM 並在下面設置 WLM 參數對於那個特定的集群 -

Concurrency - 可以同時執行的最大查詢數。

使用者組- 您需要創建使用者組,如(report_gr、etl_gr、default_gr 等)並相應地將使用者分配給這些組。

Timeout - 該使用者組查詢的超時值

記憶體- 為該使用者組的查詢分配的記憶體百分比。

最初的問題來自 2016 年,同時 AWS 增加了更多的旋鈕來微調您的工作負載。

三個組成部分:

  1. 工作負載管理
  2. 短查詢加速
  3. 並發擴展

工作負載管理 工作負載管理允許將您的不同使用者彼此分開。見下圖。我們建議按照使用者執行的 SQL 命令類型來區分使用者,因為他們共享相似的記憶體和工作負載模式。我們推薦 4 個隊列:

  • 預設
  • 負載
  • 變換
  • 對此

我已經寫了一篇關於如何通過 4 個步驟配置 WLM的詳細文章。文件建議總共不要超過 15 個插槽,但實際情況是您可以一直達到 50 個。這假設您有足夠的記憶體,因此查詢不會回退到磁碟。

短查詢加速 AWS 現在預設開啟 SQA。他們預測查詢的長度並將較短的查詢路由到一個特殊的隊列。

並發擴展 Amazon Redshift 的並發擴展為 Redshift 集群提供了額外的容量來處理查詢負載的突發。它通過在後台將查詢解除安裝到新的“並行”集群來工作。查詢基於 WLM 配置和規則進行路由。

您必須在控制台中打開並發擴展,AWS 聲稱它對 97% 的 Redshift 使用者是免費的。我們對並發擴展進行了內部測試,發現擴展可以減少查詢突發期間的排隊時間。

Amazon Redshift 中的使用者類別和工作負載

引用自:https://dba.stackexchange.com/questions/139938