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