软件简介
一:介绍
小蜜蜂池:一款高性能JDBC连接池
二:特点
1:性能好:高于光连接池
2:代码少:21个文件,2600行源码
三:版本下载
Java7
com.github.chris2018998
BeeCP
2.0.0
Java6
com.github.chris2018998
BeeCP
1.6.0
友情提示:建议使用最新版本
四:功能支持
1:请求超时支持
2:两种模式:公平与竞争
3:断网连接池自动恢复
4:闲置超时和持有超时处理
5:PreparedStatement缓存支持(也可不用)
6:支持连接回收前,事物回滚
7:支持连接回收前,属性重置(比如:autoCommit,transactionIsolation,readonly,catlog,schema,networkTimeout)
8: 支持JMX
9:支持连接工厂自定义
五:配置项说明
配置项
描述
备注
username
JDBC用户名
password
JDBC密码
jdbcUrl
JDBC连接URL
driverClassName
JDBC驱动类名
poolName
连接池名
fairMode
连接池是否公平模式
公平锁,等待者优先获取连接
initialSize
连接池初始大小
maxActive
连接池最大个数
concurrentSize
请求并发数(借用者线程数)
不允许大于连接最大数
preparedStatementCacheSize
SQL宣言缓存大小
0 表示不适用缓存
testOnBorrow
借用者获取连接后,测试连接有效性
无效则关闭连接
testOnReturn
连接归还池时,测试连接有效性
无效则关闭连接
defaultAutoCommit
连接是否为自动提交
默认true
defaultTransactionIsolation
事物等级
默认读提交,Connection.TRANSACTION_READ_COMMITTED
defaultCatalog
defaultSchema
defaultReadOnly
默认false
maxWait
连接借用等待最大时间(毫秒)
默认8秒,连接请求最大等待时间
idleTimeout
连接闲置最大时间(毫秒)
默认3分钟,超时会被清理
holdIdleTimeout
连接被持有不用的最大时间(毫秒)
默认5分钟,超时会被清理
connectionTestSQL
连接有效性测试SQL语句
一条 select 语句,不建议放入存储过程
connectionTestTimeout
连接有效性测试超时时间(毫秒)
执行查询测试语句时间,在指定时间范围内等待反应
connectionTestInterval
连接测试的间隔时间(毫秒)
默认500毫秒 连接上次活动时间点与当前时间时间差值小于它,则假定连接是有效的
forceCloseConnection
是否需要暴力关闭连接
默认false;true:直接关闭使用中连接,false:等待处于使用中归还后再关闭
waitTimeToClearPool
延迟清理的时候时间(秒)
默认3秒,非暴力清理池下,还存在使用中的连接,延迟等待时间再清理
idleCheckTimeInitDelay
闲置扫描线程延迟时间再执行第一次扫描(毫秒)
connectionFactoryClassName
自定义的JDBC连接工作类名
默认为空
enableJMX
JMX监控支持开关
六:参考Demo(SpringBoot)
application.properties
spring.datasource.username=xx
spring.datasource.password=xx
spring.datasource.url=xx
spring.datasource.driverClassName=xxx
spring.datasource.datasourceJndiName=xxx
@Configuration
public class DataSourceConfig {
@Value("${spring.datasource.driverClassName}")
private String driver;
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String user;
@Value("${spring.datasource.password}")
private String password;
@Value("${spring.datasource.datasourceJndiName}")
private String datasourceJndiName;
private BeeDataSourceFactory dataSourceFactory = new BeeDataSourceFactory();
@Bean
@Primary
@ConfigurationProperties(prefix="spring.datasource")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().type(cn.beecp.BeeDataSource.class).build();
}
@Bean
public DataSource secondDataSource(){
return new BeeDataSource(new BeeDataSourceConfig(driver,url,user,password));
}
@Bean
public DataSource thirdDataSource()throws SQLException {
try{
return dataSourceFactory.lookup(datasourceJndiName);
}catch(NamingException e){
throw new SQLException("Jndi DataSource not found:"+datasourceJndiName);
}
}
}
七:性能测试
1: 100万次(1000线程 x
1000次)访问真实数据库,测试连接池性能,并打印耗时分布以及平均耗时,最后依据平时耗时为各连接池进行名次排列,单次时间统计(机器状态对测试结果有较大影响),单次计时间范围:[datasource.getConnection(),connection.prepareStatement,statement.execute(),statement.close(),connection.close()]
下面为各连接池在mysql5.6的下测试结果(单位:毫秒)
Bee_C(5.3623) > Bee_F(6.8492) > HikariCP(9.0176)
2: 以光连接池性能基准测试结果
1:工具内置当前JDBC领域最强的几个连接池(CP30,DBCP,Tomcat,光连接池,Druid)
2:无需安装数据库,机器环境只需Path包含:JDK1.8,Maven
3:机器空载(开机后的最佳状态),需要机器与网络保持联通(跑分前Maven自动完成依赖下载)
4:解压下载包后一键执行Run.bat(CMD,在命令模式下,进入释放包后的目录,敲入:Run.bat,回车)
5:执行后静等10分钟左右,工具自动打印各连接池的分值(欢迎把结果贴在项目中留言中或其他您中意的地方)