暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GaussDB数据库客户端编程规范-JDBC

wang 2023-05-29
755

1、JDBC实例必须指定数据库,一旦实例创建,无法切换数据库。

2、单条SQL语句的长度不允许超过2G字节,业务应考虑通信成本,建议单条SQL语句不超过5K。

3、不支持对DDL使用Prepare Execute执行方式。

4、fetchsize必须要在autocommit关闭情况下使用,否则fetchsize配置无效。

5、使用默认GUC参数,避免通过JDBC发送SET请求修改GUC参数。

1)客户端(如JDBC)应使用默认(全局)参数执行查询,禁用会话级别的GUC参数。

2)通过ODBC或JDBC修改GUC参数时,需注意GUC参数仅会在当前connection中生效,特别是在连接池场景下,容易发生问题,且导致问题定位困难。

3)如果在连接中必须进行GUC参数设置,那么在将连接归还给连接池之前,必须使用

4)SET SESSION AUTHORIZATION DEFAULT;

5)RESET ALL;

6)将连接的状态清空。

6、必须推荐使用Prepare Execute方式执行查询语句,提高执行效率。

7、JDBC客户端所在主机时区、数据库集群所在主机时区和集群配置过程中的时区,三者应保持一致。

8、如果在连接中创建了临时表,那么在将连接归还给连接池之前,必须将临时表删除,避免业务出错。

9、合理设置prepareThreshold,如果query语句十分固定,建议设置为1。

10、建议设置连接参数autobalance=true,开启CN负载均衡功能,并中设置多个CN连接地址(使用逗号分隔)。 一旦开启autobalance,JDBC DRIVER会尝试将JDBC connection分配到不同的CN节点上。设置多个CN连接地址的目的是避免JDBC DRIVER在首次获取集群CN列表时,因所设置的CN节点故障而失败。一旦首次成功获取,便不会再依赖连接参数中指定的CN列表,而是根据实时获取的集群CN列表,每隔一段时间,选取连接其中有效的CN获取最新的CN列表。

11、应根据业务上层请求超时时间合理设置JDBC连接超时时间,避免作业完成或常超作业持续占用数据库资源

说明:超时参数包括loginTimeout、connectTimeout、socketTimeout等。
1)loginTimeout:Integer类型。指建立数据库连接的等待时间。超时时间单位为秒。
2)connectTimeout:Integer类型。用于连接CN操作的超时值。如果连接到CN花费的时间超过此值,则连接断开。超时时间单位为秒,默认值为0,表示已禁用,timeout不发生。
3)socketTimeout:Integer类型。用于socket读取操作的超时值。如果从CN读取所花费的时间超过此值,则连接关闭。超时时间单位为秒,默认值为0,表示已禁用,timeout不发生。
4)cancelSignalTimeout:Integer类型。发送取消消息本身可能会阻塞,此属性控制用于取消命令的“connect超时”和“socket超时”。超时时间单位为秒,默认值为10秒。
5)tcpKeepAlive:Boolean类型。启用或禁用TCP保活探测功能。默认为false。
以上参数可以在JDBC连接串或者property连接属性中配置,例如:
6)在连接串中配置:
jdbc:postgresql://host:port/postgres?tcpKeepAlive=true
7)在property中配置:
Properties info = new Properties();Info.setProperty("tcpKeepAlive", true);
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论