连接池的好处
连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用。
这种把连接“汇集”起来的技术基于这样的一个事实:对于大多数应用程序,当它们正在处理通常需要数毫秒完成的事务时,仅需要能够访问JDBC 连接的 1 个线程。当不处理事务时,这个连接就会闲置。相反,连接池允许闲置的连接被其它需要的线程使用。
事实上,当一个线程需要用 JDBC 对一个 GBase 或其它数据库操作时,它从池中请求一个连接。当这个线程使用完了这个连接,将它返回到连接池中,这样这就可以被其它想使用它的线程使用。
当连接从池中“借出”,它被请求它的线程专有地使用。从编程的角度来看,这和用户的线程每当需要一个 JDBC 连接的时候调用DriverManager.getConnection() 是一样的,采用连接池技术,可通过使用新的或已有的连接结束线程。
连接池可以极大的改善用户的 Java 应用程序的性能,同时减少全部资源的使用。连接池主要的优点有:
减少连接创建时间
虽然与其它数据库相比 GBase 提供了较为快速连接功能,但是创建新的 JDBC 连接仍会招致网络和 JDBC 驱动的开销。如果这类连接是“循环”使用的,使用该方式这些花销就可避免。
简化的编程模式
当使用连接池时,每一个单独的线程能够像创建了一个自己的 JDBC 连接一样操作,允许用户直接使用JDBC编程技术。
受控的资源使用
如果用户不使用连接池,而是每当线程需要时创建一个新的连接,那么用户的应用程序的资源使用会产生非常大的浪费并由可能会导致高负载下的异常发生。
注意,每个连到 GBase 的连接在客户端和服务器端都有花销(内存,CPU,上下文切换等等)。每个连接均会对应用程序和 GBase 服务器的可用资源带来一定的限制。不管这些连接是否在做有用的工作,仍将使用这些资源中的相当一部分。
连接池能够使性能最大化,同时还能将资源利用控制在一定的水平之下,如果超过该水平,应用程序将崩溃而不仅仅是变慢。
连接池运作原理
在实际应用开发中,特别是在WEB应用系统中,如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库是一件既消耗资源又费时的工作,如果频繁发生这种数据库操作,系统的性能必然会急剧下降,甚至会导致系统崩溃。数据库连接池技术是解决这个问题最常用的方法,在许多应用程序服务器(例如:Weblogic,WebSphere,JBoss)中,基本都提供了这项技术,无需自己编程,但是,深入了解这项技术是非常必要的。
数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个Vector对象中,一旦数据库连接建立后,不同的数据库访问请求就可以共享这些连接,这样,通过复用这些已经建立的数据库连接,可以克服上述缺点,极大地节省系统资源和时间。
数据库连接池的主要操作如下:
(1)建立数据库连接池对象(服务器启动)。
(2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。
(3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。
(4)存取数据库。
(5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。
(6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。
分享到:
相关推荐
Tomcat 中配置数据库连接池 在 Tomcat 服务器中配置数据库连接池是一个非常重要的步骤,它可以提高应用程序的性能和可靠性。在这篇文章中,我们将详细介绍如何在 Tomcat 目录下面的 Context.xml 配置文件中配置...
本主题主要探讨的是如何利用Java技术来构建网页,并有效地与数据库进行交互,特别关注数据库连接池的配置和使用。 首先,Java网页技术的核心是Servlet和JSP(JavaServer Pages)。Servlet是Java编写的服务器端程序...
连接池/连接数组/连接列表/连接集库。 该库包含用于在客户端或服务器端管理多个同时进行的TCP和UDP连接的控制机制。 一些附加的实用程序功能可用。 该代码使用纯C语言编写,以最大程度地提高兼容性,并且主要由epoll...
- **连接池**:使用连接池可以更有效地管理数据库连接,提高性能。 - **关闭连接**:在完成数据库操作后,记得关闭连接以释放资源。 - **错误处理**:添加适当的错误处理代码,确保程序在遇到问题时能优雅地失败...
为了批量解决批量提交 网上有几个方案,本示例使用了其中一种,demo里的JedisClusterPipeline类是网上找的,忘记了作者叫什么(里面有注释)。 使用的spring版本是4.3.2以下版本可能不是很好支持,jedis版本是2.8.2...
7. **连接池**:在实际应用中,为了提高性能和资源利用率,通常会使用数据库连接池,如C3P0、HikariCP、Apache DBCP等,它们预先创建并管理一定数量的数据库连接,避免频繁地打开和关闭连接。 8. **JNDI(Java ...
开发这么多年,相信大家对‘池’ 这个概念都耳熟能详了,连接池,线程池,对象池,还有这里的驻留池,池的存在就是为了复用为了共享,独乐乐不如众乐乐,毕竟一个字符串的生成和销毁既浪费空间又浪费时间,还不如先...
1.使用MyEclipse提供的数据库连接工具,连接上数据库;... dataSource(数据库连接池) sessionFactory 5.测试spring和hibernate的结合; 6.自动生成po和dao; 7.把生成的底层迁移到eclipse 8.在底层中加入分页功能;
最新版本的驱动支持多种连接方式,包括TCP/IP、SSL、Unix套接字等,并且提供了优化的性能和高级特性,如连接池和分布式事务处理。 SQL Server数据库的连接驱动则是Microsoft提供的JDBC驱动,分为类型1、2、3和4。...
ASP.NET是微软开发的一种Web应用程序框架,用于构建动态网站、Web应用和服务。它与SQL Server数据库结合使用,可实现...不过,实际的项目中还需要考虑异常处理、连接池和安全性等问题,以确保系统的稳定性和安全性。
在实际项目中,为了提高性能和安全性,建议使用PreparedStatement预编译SQL语句,避免SQL注入,并考虑使用连接池来管理数据库连接。 在你提供的压缩包文件`JspToAccess`中,可能包含了一个演示性的JSP应用,展示了...
为了实现事务的统一管理,我们需要配置PlatformTransactionManager,通常使用`DataSourceTransactionManager`,并注入数据库连接池。 9. **注入Service层实现类和Mapper接口**: 在Spring的服务层配置文件中,...
-- 配置JDBC内置连接池 --> 1 <!-- 配置数据库方言 --> org.hibernate.dialect.MySQLDialect <!-- 输出运行时生成的SQL语句 --> true <!-- 配置对输出的SQL语句进行格式化 --> true <!-- ...
连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 数字化平台:支撑数据展示,定时动态刷新数据。热部署(SQL...
连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 数字化平台:支撑数据展示,定时动态刷新数据。热部署...
一个基于Spring依赖注入特性的二级插件的模型,里面主要封装了如下特性:数据库连接池(常用的4-5个)、分页查询(oracle,mysql,sqlserver等)、数据转码(空值、特定、列名等)、数据导出(Pdf,excel,html,...
PostgreSQL的性能调优涉及多个方面,包括但不... 使用连接池:使用连接池可以减少数据库连接的创建和销毁次数,提高性能。 定期优化数据库:定期对数据库进行优化操作,比如VACUUM、ANALYZE等,可以提高数据库性能。
连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 数字化平台:支撑数据展示,定时动态刷新数据。热部署(SQL视图...
5. **错误处理与性能优化**:确保程序能够正确处理连接失败、查询错误等情况,同时考虑并发性能和资源管理,如连接池的使用,避免过多的数据库连接开销。 6. **安全性**:在局域网环境下,必须确保数据的安全性,...
连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 数字化平台:支撑数据展示,定时动态刷新数据。热部署(SQL视图...