
# 示例：不同场景下连接数据库参数配置
![](https://support.huaweicloud.com/distributed-devg-v2-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
以下示例场景中node代表"host:port"，host为数据库服务器名称或IP地址，port为数据库服务器端口。
#### 容灾场景
某客户有两套数据库集群，其中A集群为生产集群，B集群为容灾集群。当客户执行容灾切换时，A集群将降为容灾集群，B集群将升为生产集群。此时为了避免修改配置文件导致的应用重启或重新发版。客户可在初始配置文件时，即将A、B集群写入连接串中。此时在主集群不可连接时，驱动将尝试对容灾集群建连。例如A集群为{node1,node2,node3}。B集群为{node4,node5,node6}。
则url可参考如下进行配置：
```
jdbc:postgresql://node1,node2,node3,node4,node5,node6/database?priorityServers=3
```
如果想要能连接主集群的同时，可以连接到主集群内的主机，需要同时配置targetServerType=master，url可以参考如下进行配置：
```
jdbc:postgresql://node1,node2,node3,node4,node5,node6/database?priorityServers=3&targetServerType=master
```
#### 负载均衡场景
某客户存在一套数据库集群，包含如下节点{node1,node2,node3,node4,node5,node6,node7,node8,node9,node10,node11,node12}。
1. 客户在应用程序A中建立了120个长连接，并期望应用程序A上的连接可以均匀分布在当前集群各节点上，则url可参考如下配置。
   ```
   jdbc:postgresql://node1,node2,node3/database?autoBalance=true
   ```
   
2. 客户新开发了两个应用程序B、C，希望当前这三个应用程序均匀分布在指定节点，如应用程序A的连接分布在{node1,node2,node3,node4}；应用程序B的连接分布在{node5,node6,node7,node8}；应用程序C的连接分布在{node9,node10,node11,node12}；则url可参考如下配置。 应用程序A：jdbc:postgresql://node1,node2,node3,node4,node5/database?autoBalance=priority4
   应用程序B：jdbc:postgresql://node5,node6,node7,node8,node9/database?autoBalance=priority4
   应用程序C：jdbc:postgresql://node9,node10,node11,node12,node1/database?autoBalance=priority4
   
3. 客户又开发了一些应用程序，并且使用相同的连接配置串，同时期望各应用连接能较均匀的分布在集群各节点上，则url可参考如下配置。
   ```
   jdbc:postgresql://node1,node2,node3,node4/database?autoBalance=shuffle
   ```
   
4. 客户不想要使用负载均衡功能，则url可参考如下配置。
   ```
   jdbc:postgresql://node1/database
   ```
   或
   ```
   jdbc:postgresql://node1/database?autoBalance=false
   ```
   ![](https://support.huaweicloud.com/distributed-devg-v2-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
   在开启autoBalance参数时，JDBC刷新可用CN列表的周期默认为10S，可使用refreshCNIpListTime进行设置，如下：
   ```
   jdbc:postgresql://node1,node2,node3,node4/database?autoBalance=true&refreshCNIpListTime=3
   ```
   
 
#### 日志诊断场景
某客户在使用为定位问题，可通过开启trace日志进行诊断，url可参考如下进行配置。
```
jdbc:postgresql://node1/database?loggerLevel=trace
```
#### 高性能场景
某客户对于相同sql可能多次执行，仅是传参不同，为了提升执行效率，可开启prepareThreshold参数，避免重复生成执行计划，url可参考如下配置。
```
jdbc:postgresql://node1/database?prepareThreshold=5
```
某客户一次查询1000万数据，为避免同时返回造成内存溢出，可使用defaultRowFetchSize，url可参考如下配置。
```
jdbc:postgresql://node1/database?defaultRowFetchSize=50000
```
某客户需要批量插入1000万数据，为提升效率，可使用batchMode，url可参考如下配置。
```
jdbc:postgresql://node1/database?batchMode=on
```
