最近项目中用到了spring的连接池,现在记录一下自己认为对线程池的一些理解。
一、原理
由于数据库连接是一种关键的有限的资源,所以对数据库连接的管理会影响到整个项目的性能,对那些需要高性能的项目显得至关重要。
连接池能够很有效的提升性能,而其的原理如下:
系统在启动的时候创建默认数量的数据库连接,然后保存到内存中,而在系统运行过程中不再在使用数据库的时候新建一个连接,而是从内存中获取当前空闲的连接,当使用完毕后,也不是用户主动关闭连接,而是重新放入到内存中,提供下一次连接使用。我们可以通过参数的配置设置连接池的初始化大小、连接的上下限数、空闲时间等来进行控制。
二、要素
最大连接数:如果数据库连接数超过了该数目,那么接下来的数据库连接将被放入请求队列中,会影响到后面的数据库操作。
最小连接数:是连接池一直保持的连接数目,如果设置的过大,那么空闲的连接数将会非常浪费资源。
如果两个数目相差的太大,那么超过最小连接数的连接将会是一个新建的连接,而这个超过最小数目的连接不会马上释放,而是会被放入连接池等待重复连接,或者等待超时释放。
这两个数目的设置需要衡量到项目真实运行过程中,同时会被建立的连接数;当然需要考虑到数据库默认的连接数,两者之间需要进行匹配。
三、常用类型(先举出我们项目中的一个连接方式,以后再探讨其他的连接方式)
1.apache的DBCP
目前我们项目中用到的是这个方式
<property name="maxActive" value="500"></property> <property name="maxIdle" value="50"></property> <property name="maxWait" value="200"></property> <property name="testOnBorrow" value="true" /> <property name="validationQuery"> <value>select 1 from dual</value> </property>
说明:
initialSize:连接池初始化启动时的大小,默认为0
maxActive:可以从线程池中取出的最大连接数,默认为8,据说单机器高峰期并发20,0表示没有限制
maxidle:线程池中最大等待中连接数,0表示没有限制
minidle:线程池中最小等待连接数
maxwait:最大等待时间,当没有可用连接时,连接池等待连接释放的最大时间,如果超时,则会抛出异常
validationquery:验证连接是否成功,sql至少要返回一行
testOnBorrow:获取对象时是否进行验证,默认为false,最好设置为true,因为如果数据库因为某种原因挂起,而再从连接池中取出连接又不进行验证,那么取得的连接依然是无效的。
timebetweenevictionrunsmillis:如果大于0,则在指定时间对空闲连接进行验证,默认为30分钟;mysql的连接空闲时间为8小时,即一个连接超过8小时,mysql会自动断开该连接,而spring是不知道的,那么连接池中的该条连接就失效了。
2.C3P0
3.Proxool
以上连接池的使用依然在调试中,希望对你有所帮助。
相关推荐
Java JDBC 数据库连接池总结 Java 语言中,JDBC(Java DataBase Connection)是应用程序与数据库沟通的桥梁。在 Web 应用开发的早期,主要使用的技术是 CGIASPPHP 等。之后,Sun 公司推出了基于 Java 语言的 ...
Java JDBC 数据库连接池技术是Java应用程序访问数据库的关键优化手段,尤其在Web应用程序中,它解决了传统JDBC连接方式存在的效率低下和资源浪费问题。Java JDBC(Java Database Connectivity)是Java语言与各种...
Java JDBC数据库连接池总结 Java JDBC(Java Database Connectivity)是Java语言访问数据库的标准接口,它允许应用程序通过编写Java代码来与各种数据库进行交互。在Web应用程序中,由于B/S架构的普及,Java JDBC...
【JDBC数据库连接池总结】 在Java开发中,JDBC(Java Database Connectivity)是用于连接应用程序和数据库的关键技术。JDBC提供了一套API,使得开发者能够以标准的方式编写数据库交互代码。然而,直接使用JDBC在高...
JDBC数据库连接池总结 一、JDBC数据库连接池概述 在基于B/S架构的三层开发模式中,Java应用程序访问数据库的基本原理是通过JDBC(Java DataBase Connection)技术。JDBC是一种“开放”的方案,为数据库应用开发...
总结来说,Java JDBC数据库连接池是解决Web应用中数据库访问性能问题的有效工具,通过统一管理和复用数据库连接,降低了系统资源消耗,提高了应用的响应速度和稳定性。合理配置和使用连接池,对于构建高效、稳定的...
数据库连接池是Java应用中用于管理数据库连接的一种高效技术,它有效地解决了频繁创建和销毁数据库连接导致的资源浪费问题。本篇文章将深入探讨Java JDBC数据库连接池的工作原理及其重要性。 ### 数据库连接池的...
Java JDBC 数据库连接池是一种优化数据库访问效率的技术,它解决了传统JDBC模式中频繁创建和关闭数据库连接导致的性能问题。随着互联网技术的发展,B/S架构的3层开发模式成为主流,Java的Servlet+JSP+JavaBean技术因...
### Java JDBC 数据库连接池详解 #### 一、引言 随着互联网技术的快速发展和广泛应用,Web应用程序的需求日益增加,特别是在企业级应用和电子商务领域。传统C/S(客户端/服务器)架构逐步被B/S(浏览器/服务器)...
总结来说,Kafka生产者连接池是通过复用连接资源来优化Kafka生产者性能的一种高效策略,结合Apache Commons Pool 2这样的对象池库和自定义的`kafkaPool-v1.0.jar`实现,可以提供更稳定、高效的Kafka生产环境。...
Java数据库连接池驱动是Java应用程序在访问数据库时用于优化资源管理的一种技术。它提供了一种在多个数据库操作之间重用数据库连接的方式,从而避免了频繁创建和关闭连接带来的性能开销。连接池的核心思想是池化资源...
总结来说,Socket客户端连接池是优化网络通信性能的有效手段,通过复用Socket连接,减少了网络开销和系统资源消耗。理解和掌握连接池的实现原理,以及如何在项目中合理配置和使用,对于提升服务的稳定性和效率有着...
### C3P0连接池的工作总结 #### 一、C3P0连接池概述 C3P0(读作“See Three Oh”)是一个开源的JDBC连接池项目,它实现了数据源和JNDI绑定,支持JDBC连接池的全过程管理。C3P0是一个纯Java编写的持久层框架,它...
总结,结合Oracle数据库和C++的连接池技术,可以构建高效、稳定的企业级应用。理解并掌握这些知识点,对于开发人员来说至关重要,能帮助他们在面对大数据量、高并发的场景时,更好地设计和优化系统。
总结来说,C# Socket连接池是提高网络应用性能的重要工具,它结合了线程池的优点,有效地管理和复用Socket资源。通过Windows计数器,我们可以对线程池的性能进行实时监控,从而进行有针对性的优化。理解和掌握这一...