本文为您介绍如何使用JDBC、PSQL连接计算组实例。
使用JDBC连接Hologres实例
命令格式
-
未在连接字符串中显式指定计算组时,将使用用户默认的计算组连接实例。
jdbc:postgresql:<Endpoint>:<Port>/<database_name> -
显式指定计算组。
jdbc:postgresql://<Endpoint>:<Port>/<database_name>@<warehouse_name>
参数说明
|
参数 |
是否必填 |
说明 |
|
Endpoint |
是 |
Hologres实例的网络地址和端口。 进入Hologres管理控制台,选择左侧导航栏实例列表,单击目标实例,在实例详情页网络信息中获取网络地址和端口。 重要
请根据SQL运行所在网络环境选择正确的网络地址和端口,否则将无法正常连接。 |
|
Port |
是 |
|
|
database_name |
是 |
|
|
warehouse_name |
否 |
连接实例使用的计算组名称。 |
使用示例
-
未显式指定计算组
如下JDBC连接字符串连接Hologres时,系统会使用用户默认的计算组,连接到hgpostcn-cn-zz4xxxxxxxxxx实例的demo数据库。
jdbc:postgresql://hgpostcn-cn-zz4xxxxxxxxxx-cn-shenzhen-vpc-st.hologres.aliyuncs.com:80/demo -
显式指定计算组
如下JDBC连接字符串连接Hologres时,系统会使用指定的计算组warehouse_1,连接到实例hgpostcn-cn-zz4xxxxxxxxxx的demo数据库。
jdbc:postgresql://hgpostcn-cn-zz4xxxxxxxxxx-cn-shenzhen-vpc-st.hologres.aliyuncs.com:80/demo@warehouse_1
计算组路由优先级
未在连接字符串中显式指定计算组时,系统按以下优先级确定最终使用的计算组:
-
连接字符串中显式指定的计算组,即 @<warehouse_name>。
-
用户默认计算组,可通过 hg_set_user_default_warehouse 设置。
-
实例默认计算组 init_warehouse,在前两者均未指定时兜底使用。
连接建立后,执行 SELECT current_warehouse(); 可查看当前连接实际使用的计算组。
写请求(DML)自动路由
GUC 参数 hg_experimental_enable_warehouse_dml_auto_routing 默认开启(on)。开启时,写请求(DML)会自动路由到 Leader 计算组执行,因此即使连接到非 Leader 计算组,写请求也能正常执行;将该参数设置为 off 后,在非 Leader 计算组上执行写请求将被拒绝,Leader 计算组上的写入不受影响。
使用PSQL连接Hologres实例
命令格式
-
未在连接字符串中显式指定计算组时,将使用用户默认的计算组连接实例。
PGUSER="<AccessKey_ID>" PGPASSWORD="<AccessKey_Secret>" psql -h <Endpoint> -p <Port> -d <database_name> -
显式指定计算组。
PGUSER="<AccessKey_ID>" PGPASSWORD="<AccessKey_Secret>" psql -h <Endpoint> -p <Port> -d <database_name>@<warehouse_name>
参数说明
|
参数 |
是否必填 |
说明 |
|
AccessKey_ID |
是 |
|
|
AccessKey_Secret |
是 |
|
|
Endpoint |
是 |
Hologres实例的网络地址。 进入Hologres管理控制台的实例详情页获取网络地址。 |
|
Port |
是 |
Hologres实例的网络端口。 进入Hologres管理控制台的实例详情页获取网络端口。 |
|
database_name |
是 |
|
|
warehouse_name |
否 |
连接实例使用的计算组名称。 |
使用示例
-
未显式指定计算组
如下PSQL连接字符串连接Hologres时,系统会使用用户默认的计算组,连接到hgpostcn-cn-zz4xxxxxxxxxx实例的demo数据库。
PGUSER="xxx" PGPASSWORD="xxx" psql -h hgpostcn-cn-zz4xxxxxxxxxx-cn-shenzhen-vpc-st.hologres.aliyuncs.com -p 80 -d demo -
显式指定计算组
如下PSQL连接字符串连接Hologres时,系统会使用指定的计算组warehouse_1,连接到hgpostcn-cn-zz4xxxxxxxxxx实例的demo数据库。
PGUSER="xxx" PGPASSWORD="xxx" psql -h hgpostcn-cn-zz4xxxxxxxxxx-cn-shenzhen-vpc-st.hologres.aliyuncs.com -p 80 -d demo@warehouse_1
使用SQL切换当前连接计算组
Hologres V4.0版本起,支持通过SQL切换当前连接的计算组。
命令格式
-- 切换当前连接计算组
SET current_warehouse = <warehouse_name>;
-- 验证:查询当前连接计算组
SHOW current_warehouse;
注意事项
-
当前连接成功切换计算组后,连接上的GUC、Prepared Statements等状态保持不变。
-
只支持Session级别设置,不支持DB、User等级别设置,否则报错“This can only be set at session level.”。
-
当前连接用户需具备目标计算组权限,否则报错“Permission denied for warehouse "xxx".”。
-
连接上存在临时表TEMP TABLE时,不支持切换。