文档首页 > > 开发指南> 开发设计建议> JDBC配置

JDBC配置

分享
更新时间: 2019/11/12 GMT+08:00

目前,DWS相关的第三方工具都是通过JDBC进行连接的,此部分将介绍工具配置时的注意事项。

连接参数

  • 【关注】第三方工具通过JDBC连接DWS时,JDBC向DWS发起连接请求,会默认添加以下配置参数,详见JDBC代码ConnectionFactoryImpl类的实现。
    params = {
    { "user", user },
    { "database", database },
    { "client_encoding", "UTF8" },
    { "DateStyle", "ISO" },
    { "extra_float_digits", "2" },
    { "TimeZone",  createPostgresTimeZone() },
    };

    这些参数可能会导致JDBC客户端的行为与gsql客户端的行为不一致,例如,Date数据显示方式、浮点数精度表示、timezone显示。

    如果实际期望和这些配置不符,建议在java连接设置代码中显式设定这些参数。

  • 【建议】通过JDBC连接数据库时,应该保证下面三个时区设置一致:
    • JDBC客户端所在主机的时区。
    • DWS集群所在主机的时区。
    • DWS集群配置过程中时区。

fetchsize

【关注】在应用程序中,如果需要使用fetchsize,必须关闭autocommit。开启autocommit,会令fetchsize配置失效。

autocommit

【建议】在JDBC向DWS申请连接的代码中,建议显式打开autocommit开关。如果基于性能或者其它方面考虑,需要关闭autocommit时,需要应用程序自己来保证事务的提交。例如,在指定的业务SQL执行完之后做显式提交,特别是客户端退出之前务必保证所有的事务已经提交。

释放连接

【建议】推荐使用连接池限制应用程序的连接数。每执行一条SQL就连接一次数据库,是一种不好SQL的编写习惯。

【建议】在应用程序完成作业任务之后,应当及时断开和DWS的连接,释放资源。建议在任务中设置session超时时间参数。

【建议】使用JDBC连接池,在将连接释放给连接池前,需要执行以下操作,重置会话环境。否则,可能会因为历史会话信息导致的对象冲突。

  • 如果在连接中设置了GUC参数,那么在将连接归还连接池之前,必须使用“SET SESSION AUTHORIZATION DEFAULT;RESET ALL;”将连接的状态清空。
  • 如果使用了临时表,那么在将连接归还连接池之前,必须将临时表删除。

CopyManager

【建议】在不使用ETL工具,数据入库实时性要求又比较高的情况下,建议在开发应用程序时,使用DWS JDBC驱动的copyManger接口进行微批导入。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区