HikariCP的基本使用和属性详解

一、主要配置

1、dataSourceClassName
这是DataSourceJDBC驱动程序提供的类的名称。请查阅您的特定JDBC驱动程序的文档以获取此类名称,或参阅下表。注XA数据源不受支持。XA需要像bitronix这样的真正的事务管理器 。请注意,如果您正在使用jdbcUrl“旧式”基于DriverManager的JDBC驱动程序配置,则不需要此属性 。 默认值:无

2、jdbcUrl
该属性指示HikariCP使用“基于DriverManager的”配置。我们认为基于DataSource的配置(上图)由于各种原因(参见下文)是优越的,但对于许多部署来说,几乎没有显着差异。 在“旧”驱动程序中使用此属性时,您可能还需要设置该 driverClassName属性,但不要先尝试。 请注意,如果使用此属性,您仍然可以使用DataSource属性来配置您的驱动程序,实际上建议您使用URL本身中指定的驱动程序参数。 默认值:无

3、username
此属性设置从基础驱动程序获取连接时使用的默认身份验证用户名。请注意,对于DataSources,这通过调用DataSource.getConnection(*username*, password)基础DataSource 以非常确定的方式工作。但是,对于基于驱动程序的配置,每个驱动程序都不同。在基于驱动程序的情况下,HikariCP将使用此username属性来设置传递给驱动程序调用的user属性。如果这不是你所需要的,例如完全跳过这个方法并且调用。 默认值:无PropertiesDriverManager.getConnection(jdbcUrl, props)addDataSourceProperty("username", ...)

4、password
此属性设置从基础驱动程序获取连接时使用的默认身份验证密码。请注意,对于DataSources,这通过调用DataSource.getConnection(username, *password*)基础DataSource 以非常确定的方式工作。但是,对于基于驱动程序的配置,每个驱动程序都不同。在基于驱动程序的情况下,HikariCP将使用此password属性来设置传递给驱动程序调用的password属性。如果这不是你所需要的,例如完全跳过这个方法并且调用。 默认值:无PropertiesDriverManager.getConnection(jdbcUrl, props)addDataSourceProperty("pass", ...)

二、常用配置

5、autoCommit
此属性控制从池返回的连接的默认自动提交行为。它是一个布尔值。 默认值:true

6、 connectionTimeout
此属性控制客户端(即您)将等待来自池的连接的最大毫秒数。如果在没有可用连接的情况下超过此时间,则会抛出SQLException。最低可接受的连接超时时间为250 ms。 默认值:30000(30秒)

7、 idleTimeout
此属性控制允许连接在池中闲置的最长时间。 此设置仅适用于minimumIdle定义为小于maximumPoolSize。一旦池达到连接,空闲连接将不会退出minimumIdle。连接是否因闲置而退出,最大变化量为+30秒,平均变化量为+15秒。在超时之前,连接永远不会退出。值为0意味着空闲连接永远不会从池中删除。允许的最小值是10000ms(10秒)。 默认值:600000(10分钟)

8、 maxLifetime
此属性控制池中连接的最大生存期。正在使用的连接永远不会退休,只有在关闭后才会被删除。在逐个连接的基础上,应用较小的负面衰减来避免池中的大量消失。 我们强烈建议设置此值,并且应该比任何数据库或基础设施规定的连接时间限制短几秒。 值为0表示没有最大寿命(无限寿命),当然是idleTimeout设定的主题。 默认值:1800000(30分钟)

9、connectionTestQuery
如果您的驱动程序支持JDBC4,我们强烈建议您不要设置此属性。这是针对不支持JDBC4的“传统”驱动程序Connection.isValid() API。这是在连接从池中获得连接以确认与数据库的连接仍然存在之前将要执行的查询。再一次,尝试运行没有此属性的池,如果您的驱动程序不符合JDBC4的要求,HikariCP将记录一个错误以告知您。 默认值:无

10、minimumIdle
该属性控制HikariCP尝试在池中维护的最小空闲连接数。如果空闲连接低于此值并且连接池中的总连接数少于此值maximumPoolSize,则HikariCP将尽最大努力快速高效地添加其他连接。但是,为了获得最佳性能和响应尖峰需求,我们建议不要设置此值,而是允许HikariCP充当固定大小的连接池。 默认值:与maximumPoolSize相同

11、maximumPoolSize
此属性控制池允许达到的最大大小,包括空闲和正在使用的连接。基本上这个值将决定到数据库后端的最大实际连接数。对此的合理价值最好由您的执行环境决定。当池达到此大小并且没有空闲连接可用时,对getConnection()的调用将connectionTimeout在超时前阻塞达几毫秒。请阅读关于游泳池尺寸。 默认值:10

12、metricRegistry
该属性仅通过编程配置或IoC容器可用。该属性允许您指定池使用的Codahale / Dropwizard 实例MetricRegistry来记录各种指标。有关 详细信息,请参阅Metrics维基页面。 默认值:无

13、healthCheckRegistry
该属性仅通过编程配置或IoC容器可用。该属性允许您指定池使用的Codahale / Dropwizard 的实例HealthCheckRegistry来报告当前的健康信息。有关 详细信息,请参阅健康检查 wiki页面。 默认值:无

14、poolName
此属性表示连接池的用户定义名称,主要出现在日志记录和JMX管理控制台中以识别池和池配置。 默认:自动生成

maven的jar

<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>2.6.2</version>
        </dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

java示例代码:

public static void main(String[] args) throws SQLException {
        //实例化类
        HikariConfig hikariConfig = new HikariConfig();
        //设置url
        hikariConfig.setJdbcUrl("jdbc:mysql://localhost:3306/crm?characterEncoding=UTF-8");
        //数据库帐号
        hikariConfig.setUsername("root");
        //数据库密码
        hikariConfig.setPassword("root");
        hikariConfig.addDataSourceProperty("cachePrepStmts", "true");
        hikariConfig.addDataSourceProperty("prepStmtCacheSize", "250");
        hikariConfig.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
        HikariDataSource ds = new HikariDataSource(hikariConfig);
        Connection conn = null;
        Statement statement = null;
        ResultSet rs = null;
        try {
            conn = ds.getConnection();
            statement = conn.createStatement();
            rs = statement.executeQuery("select * from sys_user");
            while (rs.next()) {
                System.out.println(rs.getString("usr_name"));
                System.out.println(rs.getString("usr_password"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            if (conn != null) {
                conn.close();
                }
            }
        }

节选自:https://blog.csdn.net/Maskkiss/article/details/82115149

猜你喜欢

转载自blog.csdn.net/qq_41594146/article/details/84893632