Hikari目前已经是springboot的默认数据库连接池,并且以高效和轻量著称,因为代码量比较少,所以可以阅读一下,学习一下,github地址:HikariCP
数据库连接池常见参数
无论用什么数据库连接池,在配置数据库的时候还需要配置一大堆连接池参数,在Hikari的源码中也有很多的设置参数,那么每一个参数的实际意义是什么提前学习一下很有必要。我之前都是按照网上或者是其他项目的配置文件复制一下直接拿来用,也没有真正思考过这些参数代表的实际意义。所以写一个学习笔记,如有问题请帮忙指出,谢谢。
必须参数
url、driver-class-name、username、password这四个值是最常见的需要配置的参数,也是使用jdbc时至少需要配置的参数。
- url
url就是数据库的访问地址,不同的数据库访问地址格式也是不一样。
//mysql,端口默认3306
jdbc:mysql://machine_ip:port/dbname
//sqlserver,端口默认1433
jdbc:microsoft:sqlserver://<machine_ip><:port>;DatabaseName=<dbname>
//oracle,默认端口1521
jdbc:oracle:thin:@machine_ip:port:dbname
- driver-class-name
数据库驱动类,已经有了jdbc的规范,但是每一个数据库厂家的具体实现是不一样的,所以需要他们提供的驱动类来真正使用数据库
//mysql5
com.mysql.jdbc.Driver
//mysql6 PS:如果6中使用5的驱动,会抛出异常
com.mysql.cj.jdbc.Driver
//sqlserver
com.microsoft.jdbc.sqlserver.SQLServerDriver
//oracle
oracle.jdbc.OracleDriver
- username、password
这是连接数据库的账号和密码
Hikari常见参数
参数 | 描述 | 默认值 |
---|---|---|
autocommit | 是否自动提交事务 | true |
connectionTimeout | 连接超时时间(毫秒) 如果在没有连接可用的情况下等待超过此时间,则抛出 SQLException 最小值为250毫秒 | 30000(30秒) |
idleTimeout | 空闲超时时间(毫秒) 只有在minimumIdle < maximumPoolSize时生效,超时的连接可能被回收 数值 0 表示空闲连接永不从池中删除 源码中0的时候超时时间为Integer的最大值,即2^31-1 最小值10000毫秒(10秒) | 600000(10分钟) |
maxLifetime | 连接池中的连接的最长生命周期(毫秒) 数值 0 表示不限制 HikariCP 强烈建议我们设置此值,并且比数据库设置的连接时间的值小几秒钟 | 1800000(30分钟) |
connectionTestQuery | 连接池每分配一条连接前执行的查询语句(如:SELECT 1),以验证该连接是否是有效的 如果你的驱动程序支持 JDBC4,HikariCP 强烈建议我们不要设置此属性 | - |
minimumIdle | 最小空闲连接数 HikariCP 建议我们不要设置此值,而是充当固定大小的连接池 | 与maximumPoolSize数值相同 |
maximumPoolSize | 连接池中可同时连接的最大连接数 当池中没有空闲连接可用时,就会阻塞直到超出connectionTimeout设定的数值 | 10 |
metricRegistry | 此属性只能通过编程或者IOC容器获取 此属性允许您指定池使用的Codahale / Dropwizard MetricRegistry的实例来记录各种度量标准 | - |
healthCheckRegistry | 此属性只能通过编程或者IOC容器获取 此属性允许您指定池使用的Codahale / Dropwizard HealthCheckRegistry的实例来报告当前的健康信息 | - |
poolName | 连接池名称,主要用于显示在日志记录和 JMX 管理控制台中 | 自动生成 |