在对java商城开发以及jsp商城的开发中,连接池的使用以及配置更为重要,为什么会如此说了,下面我们的开发人员就来带大家深入的了解一下java开发过程中的连接池。
数据库每个读写操作需要一个连接,而它的访问流程大概如下:
应用数据层向DataSource请求数据库连接
DataSource使用数据库Driver打开数据库连接
创建数据库连接,打开TCP socket
应用读/写数据库
如果该连接不再需要就关闭连接
关闭socket
容易推断出打开/关闭数据库连接是开销很大的操作。PostgreSQL为每个客户端连接产生一个分离的OS进程,因此高频率地打开/关闭数据库连接会使数据库管理系统压力增大。
重用数据库连接最明显的原因是:
- 减少应用程序和数据库管理系统创建/销毁TCP连接的OS I/O开销
- 减少JVM对象垃圾
使用连接池比不使用连接池快600倍。我们的企业系统包括几十个应用,一个批处理器系统仅仅能够处理每小时大于200万次数据库连接,所以2个数量级的优化是值得考虑的。
无论何时请求一个连接,池数据源会从可用的连接池获取新连接。仅当没有可用的连接而且未达到最大的连接数时连接池将创建新的连接。连接池的close()方法把连接返回到连接池而不是真正地关闭它。
连接池是即将到来的连接请求的有界缓冲区。如果出现瞬间流量尖峰,连接池会平缓这一变化,而不是使所有可用数据库资源趋于饱和。
等待步骤和超时机制是安全钩子(safety hook),防止数据库服务器过载。如果一个应用消耗太多数据库流量,为防止它将数据库服务器压垮(因此影响整个系统),连接池将减少它对数据库的使用。
所有这些优势都是有代价的,连接池配置的额外复杂性增加(尤其是大型企业级系统中)。所以没有银弹,你需要注意很多连接池配置比如:初始化连接数、最小连接数、最大连接数、最大空闲时间、获取连接超时时间、超时重试连接次数 等。
java商城开发中的连接池的配置