全部產品
Search
文件中心

Hologres:單一實例資源群組隔離(Beta)

更新時間:Jul 12, 2024

Hologres支援細粒度資源管理能力,通過為不同的使用者帳號分配不同的計算資源(即CU,包括CPU和記憶體),限制使用者使用計算資源的上限,實現單一實例多負載的隔離,保證了使用者之間、應用之間作業的互不影響。本文為您介紹如何使用資源群組管理Hologres執行個體內的計算資源,實現資源隔離。

背景資訊

Hologres V1.0及以下版本支援在執行個體間進行資源隔離,不支援對於執行個體內部進行更細粒度的使用者層級的資源隔離。但是在實際生產環境中,往往需要根據使用者在執行個體內部進行資源隔離,限制每個使用者使用的資源上限,以保證使用者之間的作業互不影響。為滿足上述細粒度的資源隔離訴求,Hologres新增支援使用資源群組來助力您管理Hologres執行個體內的計算資源,實現資源隔離。目前由於技術的局限性,暫時無法做到所有類型的計算負載都可以通過資源群組隔離,請謹慎將該技術用在生產環境。完善的資源隔離技術,推薦採用彈性計算群組執行個體。

使用限制

  • 僅Hologres V1.1及以上版本支援使用資源群組管理Hologres執行個體內的計算資源,如果您的執行個體是V1.1以下版本,請您使用自助升級或加入HologresDingTalk交流群反饋,詳情請參見如何擷取更多的線上支援?

  • 僅限具備Superuser許可權的使用者使用資源群組管理Hologres執行個體內計算資源,否則系統會提示許可權不足。

  • 計算資源屬於執行個體層級,如果使用者有多個資料庫,所有資料庫共用同一個執行個體的計算資源,所有資料庫共用同一份資源分派方案。

HoloWeb可視化配置資源群組

通過HoloWeb可視化配置資源群組,相關操作如下。

  • 建立資源群組

    1. 進入HoloWeb開發頁面,詳情請參見串連HoloWeb

    2. 在HoloWeb開發頁面的頂部功能表列,單擊資訊安全中心

    3. 資訊安全中心頁面,單擊左側導覽列的資源群組管理

    4. 資源群組管理頁面,選擇目標執行個體名稱,單擊新增資源群組新增資源群組

    5. 新增資源群組對話方塊,輸入資源群組名稱並設定資源群組配額,單擊確認,即可完成資源群組的建立。

      說明

      一個Hologres執行個體內所有資源群組配額總和不能超過1,否則系統會報錯。

  • 刪除資源群組

    1. 進入HoloWeb開發頁面,詳情請參見串連HoloWeb

    2. 在HoloWeb開發頁面的頂部功能表列,單擊資訊安全中心

    3. 資訊安全中心頁面,單擊左側導覽列的資源群組管理

    4. 資源群組管理頁面,單擊對應資源群組操作列的刪除,進行資源群組的刪除。

      說明

      如果有使用者綁定到資源群組,則該資源群組不能被刪除。

  • 調整資源群組配額

    1. 進入HoloWeb開發頁面,詳情請參見串連HoloWeb

    2. 在HoloWeb開發頁面的頂部功能表列,單擊資訊安全中心

    3. 資訊安全中心頁面,單擊左側導覽列的資源群組管理

    4. 資源群組管理頁面目標資源群組的資源群組配額列,單擊調整配額

    5. 調整配額對話方塊,調整資源群組配額,單擊確認調整配額

  • 綁定使用者

    建立資源群組後,您可以使用HoloWeb可視化綁定使用者至資源群組。

    1. 進入HoloWeb開發頁面,詳情請參見串連HoloWeb

    2. 在HoloWeb開發頁面的頂部功能表列,單擊資訊安全中心

    3. 資訊安全中心頁面,單擊左側導覽列的資源群組管理

    4. 資源群組管理頁面,單擊對應資源群組操作列的綁定使用者

    5. 綁定資源群組頁面,單擊新增綁定使用者

    6. 綁定使用者對話方塊,選擇使用者,單擊確認

      說明
      • 如果在使用者的下拉式清單找不到對應的帳號,則說明該帳號並未添加至當前執行個體,您需要前往使用者管理頁面添加使用者。

      • 一個使用者僅能被綁定一個資源群組,若重複綁定使用者,以最新綁定的資源群組為準。

  • 解除綁定使用者

    1. 進入HoloWeb開發頁面,詳情請參見串連HoloWeb

    2. 在HoloWeb開發頁面的頂部功能表列,單擊資訊安全中心

    3. 資訊安全中心頁面,單擊左側導覽列的資源群組管理

    4. 資源群組管理頁面,單擊對應資源群組操作列的綁定使用者

    5. 綁定資源群組頁面,單擊對應使用者操作列的解除綁定使用者

    6. 解除綁定使用者對話方塊,單擊確認

SQL方式配置資源群組

  • 查看資源群組配置

    查看所有資源群組,每個資源群組配置的配額,以及每個資源群組綁定的使用者的SQL語句如下。

    SELECT  * FROM pg_holo_resource_groups;

    範例結果如下。

     res_group_name | property_key |         property_value
    ----------------+--------------+------------------------------------------
     resource_1     | worker_limit | 0.3
     default        | worker_limit | 0.7
     resource_1     | bind_users   | [ "13xxxxxxxxx13", "p4_29xxxxxxxxxx19" ]                                       
  • 新增資源群組

    說明
    • 預設情況下系統會建立一個名為default的資源群組,並將所有計算資源都分配到該資源群組,且將所有未明確綁定資源的使用者都綁定至該資源群組。

    • 建立其他資源群組後,default資源群組的規格等於所有資源群組分配之後的剩餘部分。

    • 建議default資源群組分配資源的百分比至少為0.3。

    建立資源群組的SQL語句如下。

    CALL hg_create_resource_group ('resource_group_name', quota);

    參數

    說明

    resource_group_name

    資源群組名稱。您可以使用英文字元,數字和底線自訂其名稱,最大長度50個字元。

    quota

    資源群組分配資源的百分比。取值範圍為0.1~0.9,只支援一位小數點。

  • 修改資源群組配額

    說明

    一個Hologres執行個體內所有資源群組配額總和不能超過1,否則系統會報錯。

    修改資源群組配額的SQL語句如下。

    CALL hg_alter_resource_group ('resource_group_name', quota);

    參數

    說明

    resource_group_name

    資源群組名稱。資源群組必須是已經建立的資源群組,否則系統會報錯。

    quota

    資源群組分配資源的百分比。取值範圍為0.1~0.9,只支援一位小數點。

  • 刪除資源群組

    說明

    如果有使用者綁定到資源群組,則該資源群組不能被刪除。

    刪除資源群組的SQL語句如下。

    CALL hg_drop_resource_group ('resource_group_name');

    參數

    說明

    resource_group_name

    資源群組名稱。資源群組必須是已經建立的資源群組,否則系統會報錯。

  • 將使用者綁定至資源群組

    說明
    • 一個使用者僅能被綁定一個資源群組,若重複綁定使用者,以最新綁定的資源群組為準。

    • 您可以使用如下SQL查看當前的使用者。

      SELECT current_user;

    在建立資源群組後,您可以將使用者綁定至資源群組,以限制其使用的計算資源。將使用者綁定至資源群組的SQL語句如下。

    • 文法樣本

      CALL hg_bind_resource_group('resource_group_name', 'user_name');
    • 參數說明

      參數

      說明

      resource_group_name

      資源群組名稱。資源群組必須是已經建立的資源群組,否則系統會報錯。

      user_name

      使用者的名稱。必須是存在的使用者,且該使用者必須擁有訪問資源群組對應執行個體的許可權,否則系統會報錯。

    • 使用樣本

      CALL hg_bind_resource_group ('resource_1', 'p4_29xxxxxxxxxxx');
      --注意,阿里雲賬戶需要添加雙引號
      CALL hg_bind_resource_group ('resource_1', '"ALIYUN$xxxx@aliyun.com"');
      CALL hg_bind_resource_group ('resource_1', '"RAM$xxx@xxx:xxxx"');
      CALL hg_bind_resource_group ('resource_1', '"13xxxxxxxxxxx13"');
  • 將使用者從資源群組解除綁定

    說明

    將使用者從資源群組解除綁定後,該使用者隸屬於default資源群組。

    將使用者從資源群組解除綁定的SQL語句如下。

    • 文法樣本

      CALL hg_unbind_resource_group('resource_group_name', 'user_name');
    • 參數說明

      參數

      說明

      resource_group_name

      資源群組名稱。資源群組必須是已經建立的資源群組,否則系統會報錯。

      user_name

      使用者的名稱。必須是存在的使用者,且該使用者必須擁有訪問資源群組對應執行個體的許可權,否則系統會報錯。

    • 使用樣本

      CALL hg_unbind_resource_group ('resource_1', 'p4_29xxxxxxxxxxxxx9');
      -- 注意,阿里雲賬戶需要添加雙引號
      CALL hg_unbind_resource_group ('resource_1', '"RAM$xxxx@xxx:xxx"');

常見問題

Q:為什麼資源群組配額設定為0.5,CPU和記憶體指標仍然會大於50%?

目前資源群組配額限制了大部分查詢引擎的CPU和記憶體,但是有一小部分CPU和記憶體在資源群組之外不受限制(包括但不限於SQL解析、最佳化、中繼資料處理、調度、PQE執行、Compaction等)。同時即時寫入情況下,CPU受限制,記憶體不受限制。所以會出現資源群組總CPU和記憶體指標高於資源群組所設定配額的情況。