本文为您介绍Hologres中查看计算组访问Table Group权限、计算组加载Table Group、设置Table Group的主计算组等计算组Table Group授权相关命令。
注意事项
- 使用计算组A新建Table Group时,Table Group的主计算组默认为计算组A。 
- 计算组之间内存状态为毫秒级的自动实时同步。当使用主计算组写入时,系统会自动将主计算组内存中的数据同步给从计算组,从计算组的CPU和内存也会有少量开销。同时建议不同计算组的规格配置差异不要太过明显,通常不建议超过4倍。 
- 仅实例的默认计算组支持将数据写入外部表。 
查看计算组访问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之后,才能使用计算组操作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 Warehouse)
- 注意事项 - 只有设置为主计算组,才能对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,将不支持新建计算组,如需扩容请参见扩容计算组计算资源。  
- 在计算组 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操作,因此会出现报错。 