
# DWS连接管理规范
#### 规则1.1 DWS集群必须配置负载均衡
![](https://support.huaweicloud.com/devg-911-dws/public_sys-resources/note_3.0-zh-cn.png)
**违反规则的影响**：
- 负载不均衡导致性能问题，严重情况会导致业务中断。
- CN故障场景，业务无法自恢复或恢复时间长。
**方案建议**：
- 配置ELB负载均衡，应用连接负载均衡IP。
- 配置JDBC负载均衡方式的操作参见[负载均衡方式配置JDBC](https://support.huaweicloud.com/mgtg-dws/dws_01_0169.html)。
 
#### 规则1.2 连接数据库完成所需操作后，必须关闭数据库连接（连接池场景除外）
![](https://support.huaweicloud.com/devg-911-dws/public_sys-resources/note_3.0-zh-cn.png)
**违反规则的影响**：
- 空闲连接过多，触发连接上限，导致新建连接报错。
- 空闲连接过多，内部占用过多资源，导致资源过载。
**方案建议**：
- 应用侧与数据库建连并使用完成后，手动关闭连接。
- 服务侧设置session_timeout参数，连接空闲超时自动断开。
 
#### 规则1.3 开启的事务最后必须提交或回滚
![](https://support.huaweicloud.com/devg-911-dws/public_sys-resources/note_3.0-zh-cn.png)
**违反规则的影响**：
- 事务长时间不提交，持锁阻塞ALTER等操作，进而阻塞所有业务。
- 大量"idle in transaction"连接，触发连接上限，导致新建连接报错。
**方案建议**：
- 默认使用autocommit自动提交方式，如关闭autocommit，则必须手动提交。
- 显式start transaction开启的事务，执行完相关操作后，必须显式commit/rollback结束事务。
 
#### 规则1.4 应用侧使用连接池场景，其空闲超时配置必须小于服务侧的SESSION_TIMEOUT配置
![](https://support.huaweicloud.com/devg-911-dws/public_sys-resources/note_3.0-zh-cn.png)
**违反规则的影响**：
- 连接池的连接被服务侧的空闲超时机制清理，连接复用效果下降。
**方案建议**：
- 将连接池的空闲超时参数设置为小于服务侧的SESSION_TIMEOUT值，或调大SESSION_TIMEOUT为大于连接池超时参数（不推荐）。
 
#### 规则1.5 应用侧使用连接池场景，如使用连接SET设置过参数，将连接归还连接池前，必须进行参数重置
![](https://support.huaweicloud.com/devg-911-dws/public_sys-resources/note_3.0-zh-cn.png)
**违反规则的影响**：
- 连接被其他业务复用时，可能会因复用其他业务设置的参数出现业务性能、业务报错等问题。
**方案建议**：
- 在将连接归还连接池之前，使用"SET SESSION AUTHORIZATION DEFAULT;RESET ALL;"重置参数。
**注意**：
在应用侧使用连接池的场景，如果在DWS服务侧通过GS_GUC RELOAD设置了全局的GUC参数，需要重启应用侧连接池该参数才可以生效，因为该设置只针对新建的连接生效，针对连接池中原有的连接不生效。
#### 规则1.6 应用侧使用连接池场景，如使用连接创建过临时表，将连接归还连接池前，必须手动清理所创建的临时表
![](https://support.huaweicloud.com/devg-911-dws/public_sys-resources/note_3.0-zh-cn.png)
**违反规则的影响**：
- 连接被其他业务复用时，可能出现创建临时表报错问题。
**方案建议**：
- 在将连接归还连接池之前，使用DROP清理当前SESSION创建的临时表。
 
