本文為您介紹Hologres中如何為計算群組授予資料的存取權限。
注意事項
使用計算群組A建立Table Group時,Table Group的主計算群組預設為計算群組A。
計算群組之間記憶體狀態為毫秒級的自動即時同步。當使用主計算群組寫入時,系統會自動將主計算群組記憶體中的資料同步給從計算群組,從計算群組的CPU和記憶體也會有少量開銷。同時建議不同計算群組的規格配置差異不要太過明顯,通常不建議超過4倍。
僅執行個體的預設計算群組支援將資料寫入外部表格。
Hologres V2.0版本,計算群組對資料讀寫任務的支援情況為:
載入了Table Group的計算群組(Follower計算群組),僅可對Table Group中的表執行資料讀任務,不支援寫。
被設定為Table Group的主計算群組(Leader計算群組),可對Table Group中的表執行資料讀寫任務。
未載入Table Group的計算群組,不可讀寫對應Table Group中的資料。
Hologres V4.0版本升級計算群組執行個體架構,對資料讀寫任務的支援情況如下:
需開啟
GUC hg_warehouse_enable_use_local_resource,詳見GUC參數。針對不經Fixed Plan最佳化的讀寫任務,無需計算群組載入Table Group,即可執行。
可經Fixed Plan最佳化的讀寫任務請參見Fixed Plan加速SQL執行。
所有寫入任務(即時寫入、批量寫入)仍支援通過DML自動路由功能,路由到Leader計算群組中執行。
任務類型/計算群組類型 | Leader計算群組 | Follower計算群組 | 其他計算群組 |
即時寫入 | 支援 | 不支援 | 不支援 |
批量寫入 | 支援 | 支援 | 支援 |
Key/Value點查、Prefixscan | 支援 | 支援 | 不支援 |
其他讀任務 | 支援 | 支援 | 支援 |
查看計算群組訪問Table Group許可權
命令格式
您可以使用如下SQL查看當前執行個體下所有計算群組的Table Group許可權資訊。
SELECT * FROM hologres.hg_warehouse_table_groups;參數說明
hg_warehouse_table_groups表包含的欄位資訊如下:
欄位
欄位類型
說明
樣本
warehouse_name
TEXT
計算群組名稱。
init_warehouse
warehouse_id
INTEGER
計算群組ID,是計算群組的唯一ID。
1
database_name
TEXT
資料庫名稱。
wh_demo
tablegroup_name
TEXT
Table Group名稱。
wh_demo_tg_default
leader
BOOLEAN
該計算群組是否為該Table Group的主計算群組。
t
replica_count
INTEGER
Replica數。
1
計算群組載入Table Group(設定Table Group的Follower計算群組)
計算群組載入Table Group,即將計算群組設為Table Group的Follower計算群組。
計算群組載入了Table Group之後,才能使用計算群組操作Table Group中的表。
計算群組載入Table Group需要具備執行個體的Superuser許可權。
命令格式:
CALL hg_table_group_load_to_warehouse ('<database_name>.<table_group_name>', '<warehouse_name>', <replica_count>);參數說明:
參數
類型
說明
database_name
TEXT
資料庫名稱。
table_group_name
TEXT
Table Group名稱。
warehouse_name
TEXT
需要載入Table Group的計算群組名稱。
replica_count
INTEGER
Replica數量,預設值1,非必填。
使用樣本:
-- 為計算群組warehouse_1載入資料庫db1中的table_group_1,replica數為1 CALL hg_table_group_load_to_warehouse ('db1.table_group_1', 'warehouse_1'); -- 為計算群組warehouse_1載入資料庫db1中的table_group_1,replica數為2 CALL hg_table_group_load_to_warehouse ('db1.table_group_1', 'warehouse_1',2);
設定Table Group的主(Leader)計算群組
注意事項
只有設定為主計算群組,才能對Table Group中的表做DML操作(包括寫入資料等)。
一個Table Group只能有一個主計算群組,修改Table Group的主計算群組時,主計算群組需要重啟,請注意業務影響。
設定Table Group的主計算群組需要具備執行個體的Superuser許可權。
命令格式
CALL hg_table_group_set_leader_warehouse ('<database_name>.<table_group_name>', '<warehouse_name>');參數說明
參數
類型
說明
database_name
TEXT
資料庫名稱。
table_group_name
TEXT
Table Group名稱。
warehouse_name
TEXT
需要設定為主計算群組的名稱。
計算群組卸載Table Group
注意事項
計算群組卸載Table Group需要具備執行個體的Superuser許可權
不能卸載設定為Table Group的主計算群組的計算群組,需要先轉換主計算群組。
命令格式
CALL hg_table_group_unload_from_warehouse ('<database_name>.<table_group_name>', '<warehouse_name>');參數說明
參數
類型
說明
database_name
TEXT
資料庫名稱。
table_group_name
TEXT
Table Group名稱。
warehouse_name
TEXT
需要卸載Table Group的計算群組名稱。
修改計算群組載入Table Group的Replica數
注意事項:修改計算群組載入Table Group的Replica數需要具備執行個體的Superuser許可權。
命令格式
CALL hg_table_group_set_warehouse_replica_count ('<database_name>.<table_group_name>', <replica_count>,'<warehouse_name>');參數說明
參數
類型
說明
database_name
TEXT
資料庫名稱。
table_group_name
TEXT
Table Group名稱。
replica_count
INTEGER
Replica數量。
warehouse_name
TEXT
需要修改載入Table Group的Replica數的計算群組名稱。
計算群組DML自動路由(Beta)
注意事項
由於一個Table Group僅支援一個主計算群組,僅主計算群組支援對Table Group執行DML操作。從Hologres V2.2版本起,支援將DML自動路由到Table Group的主計算群組執行。使用該功能後,寫入任務會自動使用主計算群組的資源執行,但寫入任務的QPS等指標仍統計在從計算群組上。
說明開啟多條DML混合事務功能後,無法使用計算群組DML自動路由功能。多條DML混合事務功能詳情,請參見SQL事務能力。
開啟或關閉計算群組DML自動路由
您可以使用如下GUC(Grand Unified Configuration)參數,控制Session層級或資料庫層級計算群組DML自動路由是否開啟。
說明計算群組DML自動路由GUC參數
hg_experimental_enable_warehouse_dml_auto_routing預設開啟。Session層級
-- 開啟計算群組 DML 自動路由 SET hg_experimental_enable_warehouse_dml_auto_routing = ON; -- 關閉計算群組 DML 自動路由 SET hg_experimental_enable_warehouse_dml_auto_routing = OFF;資料庫層級
-- 開啟計算群組 DML 自動路由 ALTER DATABASE <database_name> SET hg_experimental_enable_warehouse_dml_auto_routing = ON; -- 關閉計算群組 DML 自動路由 ALTER DATABASE <database_name> SET hg_experimental_enable_warehouse_dml_auto_routing = OFF;參數說明
參數
類型
說明
database_name
TEXT
資料庫名稱。
使用樣本
進入HoloWeb開發頁面,詳情請參見串連HoloWeb並執行查詢。
在HoloWeb開發頁面頂部功能表列,單擊資訊安全中心。
在資訊安全中心頁面,單擊左側導覽列的計算群組管理。
在計算群組資源管理頁簽,單擊新增計算群組,新增名稱為
read_wh1的計算群組。說明每個執行個體最多可以建立10個計算群組,每個計算群組資源最小32CU,最大512CU。若您未分配的計算資源小於32 CU,將不支援建立計算群組,如需擴容請參見計算群組縱向擴容(Scale up)。

在計算群組 Table Group 授權管理頁簽,單擊新增計算群組授權,設定計算群組
read_wh1為目標Table Group的從計算群組(follower)。說明建立Table Group請參見Table Group管理。

在SQL編輯器中,設定當前計算群組為
read_wh1,分別在開啟或關閉計算群組DML自動路由時執行DML語句。當開啟計算群組DML自動路由時,DML語句會自動路由到Table Group的主計算群組(init_warehouse)執行。

當關閉計算群組DML自動路由時,DML語句不會自動路由到Table Group的主計算群組(init_warehouse)執行,而是使用當前計算群組(read_wh1)執行。由於只有主計算群組才能對Table Group中的表做DML操作,因此會出現報錯。
