動態 WLM 範例 - Amazon Redshift

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

動態 WLM 範例

假設您的叢集 WLM 使用下列動態屬性設定兩個佇列。

佇列 並行數量 要使用的記憶體 %

1

4

50%

2

4

50%

現在,假設您的叢集有 200 GB 的記憶體可供查詢處理使用。(此為任意數字,僅供示範用途。) 如下列方程式所示,每個槽配置 25 GB。

(200 GB * 50% ) / 4 slots = 25 GB

接下來,您將 WLM 變更為使用下列動態屬性。

佇列 並行數量 要使用的記憶體 %

1

3

75%

2

4

25%

如下列方程式所示,佇列 1 中每個槽的新記憶體配置為 50 GB。

(200 GB * 75% ) / 3 slots = 50 GB

假設套用新組態時,查詢 A1、A2、A3 和 A4 在執行中,而查詢 B1、B2、B3 和 B4 會排入佇列。WLM 會動態重新設定查詢槽,如下所示。

步驟 執行中的查詢 目前槽計數 目標槽計數 配置的記憶體 可用的記憶體量
1 A1、A2、A3、A4 4 0 100 GB 50 GB
2 A2、A3、A4 3 0 75 GB 75 GB
3 A3、A4 2 0 50 GB 100 GB
4 A3、A4、B1 2 1 100 GB 50 GB
5 A4、B1 1 1 75 GB 75 GB
6 A4、B1、B2 1 2 125 GB 25 GB
7 B1、B2 0 2 100 GB 50 GB
8 B1、B2、B3 0 3 150 GB 0 GB
  1. WLM 會重新計算每個查詢槽的記憶體配置。佇列 1 最初配置 100 GB。新的佇列總共配置 150 GB,所以新佇列立即有 50 GB 可用。佇列 1 現在使用四個槽,且新的並行層級是三個槽,所以不會新增任何槽。

  2. 當一個查詢完成,就會移除槽並釋出 25 GB。佇列 1 現在有三個槽和 75 GB 的可用記憶體。新的組態規定每個新的槽要有 50 GB,但新的並行層級是三個槽,所以不會新增任何槽。

  3. 當第二個查詢完成,就會移除槽並釋出 25 GB。佇列 1 現在有兩個槽和 100 GB 的可用記憶體。

  4. 使用 50 GB 的可用記憶體新增一個槽。佇列 1 現在有三個槽和 50 GB 的可用記憶體。排入佇列的查詢現在可以路由至新的槽。

  5. 當第三個查詢完成,就會移除槽並釋出 25 GB。佇列 1 現在有兩個槽和 75 GB 的可用記憶體。

  6. 使用 50 GB 的可用記憶體新增一個槽。佇列 1 現在有三個槽和 25 GB 的可用記憶體。排入佇列的查詢現在可以路由至新的槽。

  7. 當第四個查詢完成,就會移除槽並釋出 25 GB。佇列 1 現在有兩個槽和 50 GB 的可用記憶體。

  8. 使用 50 GB 的可用記憶體新增一個槽。佇列 1 現在有三個槽,各有 50 GB,所有可用的記憶體都已配置。

轉移完成,所有查詢槽都可供排入佇列的查詢使用。