概括总结
使用druid数据源之后,相对于第002版自己随手写的数据库,性能反而下降了8.49%。原因在于,002版是“随手”写的,因此功能非常简陋,要什么没什么,只能从内存中获取连接,因此很快。而druid数据源是一个工业级别的产品,它的内部做了大量的优化(比如多线程控制、性能监控等),这些优化的代码在运行的时候都是需要花时间的,因此相对就慢了一些。
003版本更新说明
pom.xml文件中引入了新的jar包:
<!-- 阿里的druid数据库连接工具 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
它提供了一般的数据库连接池工具都具备的功能,比如设置初始化连接数、最大连接数、最小空闲连接数等。但是它最大的卖点是它优秀的监控功能:哪些SQL执行次数最多?哪些SQL执行时间最长?等等之类的问题,它都帮你记录了。可以参考这篇文章:Druid Monitor监控JavaSE和JavaWeb
003版本中,修改了“JdbcUtil003.java”类,提供了一个setDataSource
方法,以方便以后修改成其他的数据库连接池:
/** 设置数据库源 */
public static void setDataSource(DataSource dataSourceOut) {
dataSource = dataSourceOut;
}
这个版本也做了一些其他的小修改,在这里就不列举。
测试结果
三个版本平均提交一个订单的耗时情况如下:
001版本耗时(ms) | 002版本耗时(ms) | 003版本耗时(ms) |
---|---|---|
183 | 106 | 115 |
002版本相对于001版本性能提升了: (183 - 106) / 183 * 100% = 42.07%
003版本相对于001版本性能提升了: (183 - 115) / 183 * 100% = 37.15%
003版本相对于002版本性能下降了: (115 - 106) / 106 * 100% = 8.49%
【备注】:不同的机器上的测试结果会不一样,以上测试结果仅供参考。
“最好的”数据库连接池
druid的自我介绍是这样的:
“最好的”这三个字还真是自信啊,反正其他的数据库连接池都没说过这种话~
衷心希望它能越做越好,毕竟我们公司是一直都在用它。
源码
003版本的github源码在这里,如果不知道怎样运行项目,请参考这里