云服务器内容精选

  • Hikari CP连接池配置 下载JDBC驱动包,请参见下载JDBC或ODBC驱动。 下载HikariCP驱动包,下载地址:https://mvnrepository.com/artifact/com.zaxxer/HikariCP/4.0.3。 下载slf4j驱动包,下载地址:https://www.slf4j.org/download.html。 将JDBC驱动包和HikariCP、slf4j驱动包添加到工程中,配置数据库连接池相关参数。 表2 Hikari CP连接池参数配置 参数名 默认值 说明 driverClassName 填写org.postgresql.Driver 数据库驱动名称。 jdbcUrl - 连接数据库的URL。 username - 用户名。 password - 密码。 autoCommit true 连接返回连接池时,是否自动提交事务。 connectionTimeout 30000 从连接池获取连接的最大超时时间。 idleTimeout 60000 空闲连接存活的最大时间。只有当minimumIdle小于maximumPoolSize时,该设置才生效。 空闲连接数大于minimumIdle且连接的空闲状态时间大于idleTimeout值时,将把该连接从连接池中删除。 0表示永不超时。 keepaliveTime 0 保持空闲连接可用的检测频率,单位:ms。0表示不检测。 maxLifetime 1800000 连接存活的最大时间,单位:ms。0表示没有限制。 connectionTestQuery - 连接检测的查询语句。 minimumIdle 10 最小空闲连接数。为了提高性能,建议不要设置此参数,使连接池为固定大小。 maximumPoolSize 10 最大连接数。 metricRegistry - 该参数仅通过编程配置或IoC容器可用。 该参数用于指定池使用的“Codahale/Dropwizard MetricRegistry”实例来记录各种指标。 healthCheckRegistry - 该参数仅通过编程配置或IoC容器可用。 该参数用于指定池使用的“Codahale/Dropwizard HealthCheckRegistry”实例来记录健康信息。 poolName - 连接池名称。 initializationFailTimeout 1 启动连接池时不能成功初始化连接,是否快速失败。 大于0时,会尝试获取连接。如果获取时间超过指定时长(connectionTimeout + initializationFailTimeout),不会开启连接池,并抛出异常。 等于0时,会尝试获取并验证连接。如果获取成功但验证失败则不开启池,但是如果获取失败还是会开启池。 小于0时,直接启动连接池,不进行初始化连接尝试。 isolateInternalQueries false 是否在事务中隔离HikariCP自己的查询。“autoCommit”为“false”时,该设置生效。 allowPoolSuspension false 是否允许通过JMX挂起和恢复连接池。挂起时获取连接不会超时,直到连接池恢复。 readOnly false 连接是否只读。 registerMbeans false 是否开启JMX。 catalog - 默认的数据库catalog。 connectionInitSql - 连接池初始化后执行的SQL。 transactionIsolation - 默认的事务隔离级别。 validationTimeout 5000 连接检测的超时时间。必须大于connectionTimeout,最小允许的值为250。 leakDetectionThreshold 0 连接可以被借出多久。 超过该时间将打印连接可能泄露的日志,最小允许的值为2000,单位:ms。 schema - 默认的数据库schema。 threadFactory - 指定连接池用于创建线程的 java.util.concurrent.ThreadFactory实例。此参数仅通过编程配置或IoC容器可用。 scheduledExecutor - 指定连接池用于执行定时任务的java.util.concurrent.ScheduledExecutorService实例。此参数仅通过编程配置或IoC容器可用。
  • 配置JDBC连接使用 IAM 认证方式连接集群 配置JDBC连接参数 表1 数据库连接参数 参数 描述 url gsjdbc4.jar/gsjdbc200.jar数据库连接描述符。JDBC接口不提供重试连接的能力,您需要在业务代码中实现重试连接的处理。url示例如下: jdbc:dws:iam://dws-IAM-demo:cn-north-4/gaussdb?AccessKeyID=XXXXXXXXXXXXXXXXXXXX&SecretAccessKey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&DbUser=user_test&AutoCreate=true JDBC URL参数说明: jdbc:dws:iam是URL格式的前缀。 dws-IAM-demo为数据库集群名称。 cn-north-4是集群所在的区域。JDBC会根据所填写区域,访问对应DWS服务,向所在集群下发IAM证书,用于IAM用户认证。DWS服务地址已内置在JDBC配置文件中。 有关 GaussDB (DWS)的区域信息,请参考地区和终端节点。 gaussdb是要连接的数据库名。 AccessKeyID/SecretAccessKey为参数DbUser指定的IAM用户所对应的访问密钥ID和秘密访问密钥。 DbUser请设置为IAM用户名,注意,当前版本暂不支持IAM用户名中含有中划线的情况。 如果数据库中已存在DbUser指定的用户,则临时用户凭证具有与现有用户相同的权限。 如果数据库中不存在DbUser指定的用户,且AutoCreate参数值为true,则自动创建一个以DbUser参数值作为用户名的新用户,默认创建的用户为数据库普通用户。 AutoCreate可以不设置,默认为false。该参数表示是否在数据库中自动创建一个以DbUser参数值作为用户名的数据库用户。 true表示自动创建。如果用户已存在则不会再创建。 false表示不会自动创建。如果数据库中不存在DbUser指定的用户名将返回失败。 info 数据库连接属性。常用的属性如下: ssl:Boolean类型。表示是否使用SSL连接。 loglevel:Integer类型。为LogStream或LogWriter设置记录进DriverManager当前值的日志信息量。 目前支持org.postgresql.Driver.DEBUG和org.postgresql.Driver.INFO。值为1时,表示只打印org.postgresql.Driver.INFO,将记录非常少的信息。值大于等于2时,表示打印org.postgresql.Driver.DEBUG和org.postgresql.Driver.INFO,将产生详细的日志信息。默认值为0,表示不打印日志。 charSet:String类型。表示在向数据库发送数据或从数据库接收数据时使用到的字符集。 prepareThreshold:Integer类型。用于确定在转换为服务器端的预备语句之前,要求执行方法PreparedStatement的次数。缺省值是5。 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 //以下用例以gsjdbc4.jar为例。 //以下代码将获取数据库连接操作封装为一个接口,可通过给定集群所在的区域、集群名称、AccessKeyID、SecretAccessKey及对应的IAM用户名来连接数据库。 public static Connection GetConnection(String clustername, String regionname, String AK, String SK, String username) { //驱动类。 String driver = "org.postgresql.Driver"; //数据库连接描述符。 String sourceURL = "jdbc:dws:iam://" + clustername + ":" + regionname + "/postgresgaussdb?" + "AccessKeyID=" + AK + "&SecretAccessKey=" + SK + "&DbUser=" + username + "&autoCreate=true"; Connection conn = null; try { //加载驱动。 Class.forName(driver); } catch (ClassNotFoundException e) { return null; } try { //创建连接。 conn = DriverManager.getConnection(sourceURL); System.out.println("Connection succeed!"); } catch (SQLException e) { return null; } return conn; }