数据库连接池浅析-java开发java经验技巧

数据库连接池浅析-java开发java经验技巧

ID:30867953

大小:156.42 KB

页数:5页

时间:2019-01-03

数据库连接池浅析-java开发java经验技巧_第1页
数据库连接池浅析-java开发java经验技巧_第2页
数据库连接池浅析-java开发java经验技巧_第3页
数据库连接池浅析-java开发java经验技巧_第4页
数据库连接池浅析-java开发java经验技巧_第5页
资源描述:

《数据库连接池浅析-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、数据库连接池浅析-编程开发技术数据库连接池浅析木文由ImportNew・hejiani翻译自javacodegeekso欢迎加入翻译小组。转载请见文末要求。简介我从事的所有项目都用到了数据库连接池,这样做自然有它的理由。右时我们可能忘记了使用设计模式或者某种特定技术的理由,这时就值得我们反思为什么要使用它。每项技术或者每个技术决策都有它的优势和不足,如果不了解其缺点,你需要知道你失去了什么。数据库连接池生命周期数据库毎个读写操作需要一个连接。数据库连接调用流如下图:getConnectioncloseconne

2、ctApplicationijava.sql.DataSourceijava.sql.Driver1java.sql.Corinectioni调用流程为:1.应用数据层向DataSource请求数据库连接2.DataSource使用数据库Driver打开数据库连接3.创建数据库连接,打开TCPsocket4.应用读/写数据库5.如果该连接不再需耍就关闭连接6.关闭socket容易推断出打开/关闭数据库连接是开销很人的操作。PostgreSQL为每个客户端连接产生一个分离的OS进程,因此高频率地打开/关闭数据库连

3、接会使数据库管理系统压力增大。重用数据库连接最明显的原因是:-减少应用程序和数据库管理系统创建/销毁TCP连接的OSI/O开销-减少JVM对象垃圾使用连接池VS不使用连接池我们來比较一下不使用连接池方法与使用HikariCP,HikariCP可能是目前最快的连接池框架。该测试将打开和关闭1000个连接。privatestaticfinalLoggerLOGGER=LoggerFactory.getLogger(DataSourceConnectionTest.class);privatestaticfinali

4、ntMAX_ITERATTONS二1000;privateSlf4jReporterlogReporter;privateTimertimer;protectedabstractDataSourccgctDataSourcc();©Beforepublicvoidinit(){MetricRegistrymetricRegistry二newMetricRegistry();this・logReporter=Slf4jRcportcr.forRegistry(metricRegistry)・outputTo(LO

5、GGER).build();timer二metricRegistry.timer(,,connection,z);}©TestpublicvoidtestOpenCloseConnections()throwsSQLException{for(inti=0;i

6、();下面的图表为打开和关闭连接花费的时间,这个时间当然越短越好。■NoPooling■ConnectionPooling使用连接池比不使用连接池快600倍。我们的金业系统包括几十个应用,一个批处理器系统仅仅能够处理每小时大于200万次数据库连接,所以2个数量级的优化是值得考虑的。TypeNoPoolingTime(milliseconds)ConnectionPoolingTime(milliseconds)min74.5514140.002633max146.69324125.528047mean78.21

7、65490.128900stddev5.94383353.969438median76.1504400.003218为什么连接池快很多?理解使用数据库连接池后运行如此好的原因,要分析池连接管理的调用流程:Application"T-java.sql.DataSource"T-Pool1java.sql.Corinection"T-geiL/unneciion™dCquilc~沪■■*LlUbU

8、池将创建新的连接。连接池的close()方法把连接返回到连接池而不是真正地关闭它。getConnectionAAYes更快更安全连接池是即将到來的连接请求的有界缓冲区。如果出现瞬间流量尖峰,连接池会平缓这一变化,而不是使所有可用数据库资源趋于饱和。等待步骤和超时机制是安全钩子(safetyhook),防止数据库服务器过载。如果一个应用消耗太多数据库流量,为防止它将数据库服务器压垮(因此

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。