`

数据库为什么要添加连接池

阅读更多

今天在学习kauklahti的时候,自己写了一个Jdbc连接mysql的例子。算是复习了一下Jdbc的用法。

 

整个例子的源码如下:
 
//------------------------------------------------------------------------------------
import java.sql.Connection;
 
public class Database{
 
   private Connection connection;
   
   public Database(){
       Class.forName("com.mysql.jdbc.Driver").newInstance();   // 注册驱动
   }
   
   // 查询help_relation中help_topic_id小于100的数据,
   // 并打印输出
   public excuteQuery(){
       String url ="jdbc:mysql://localhost:3306/mysql?user=root&password=654321";
       connection = DriverManeger.getConnection(url);
       Statement statement = connection.createStatement();
       String sql ="select * from help_relation where help_topic_id<100";
       ResultSet rs = statement.executeQuery();
 
        while(rs.next){
               System.out.printlnl(rs.getString(1));
         }   
   }
 
      // 测试主函数
   public static void main(String[] args){
               new Database().executeQuery();
   }
}
//-----------------------------------------------------------------------------------
 
到此,jdbc连接mysql数据的工作已经完成了,但是这里我突然想出了一个问题:为什么所有的数据
在大负载的情况下都要用连接池?
 
 
现在通过这个简单的例子可以清楚的看到,如过每次我们请求数据时,都要创建一个Database对象,
通过该对象提供的方法来查询数据库,该对象中封装了一个Connection,这个连接用于连接msyql,
相当于在mysql和java之间建立了一条数据的传输通道。并且是一个独立的线程。如果有很多Connection
操作同时连接到mysql的时候,就需要建立很多的Connection,这样的话无疑是浪费了很多的Connection
实例。并且用可能引起内存泄漏,为了避免这样情况的方法,使用连接池可以缓解数据库的压力。
 
如果不添加连接池,最有可能影响数据库性能的一种现象是:
当msyql的负载(connection)已满,当前已经连接到msyql上的数据库的Connection都在等待mysql返回数
据,如果再有新的连接进来,也只能处于等待状态,当mysql中已有的连接完成查询退出后,新的连接才
能进入到mysql数据库中。这时新进来的Connection需要重新创建连接,无法复用已经创建的连接对象。
 
对于数据库来说,创建和断开连接是比较耗费资源的。因此使用连接池来重复使用已经创建好的对象可以
极大节省数据库的查询时间。
 
以上几点是本人在做Facebook的应用插件SuperMarket的时候的一个总结。
                                                                                          
                                                                         时间2010/03/03
分享到:
评论

相关推荐

    常用jdbc数据库连接jar包,数据库连接池jar包

    本资源集合了常用的JDBC数据库连接jar包,以及一些知名的数据库连接池实现,如dbcp和c3p0,这对于开发人员来说是非常宝贵的资源。 首先,让我们了解一下JDBC。JDBC提供了一套标准的API,包括接口和类,使得开发者...

    数据库连接池管理策略

    数据库连接池管理策略是优化数据库应用性能的关键环节。在软件开发中,特别是涉及到与数据库交互的应用,连接池的使用能够显著提升系统效率。本文将详细解释数据库连接池的工作原理、优缺点以及如何进行管理和配置。...

    Java jdbc数据库连接池总结

    数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来...

    配置数据库连接池

    在给定的标题“配置数据库连接池”中,我们可以深入探讨数据库连接池的概念、工作原理,以及如何配置Oracle9i和MySQL的连接池。 数据库连接池的基本思想是预先创建并维护一定数量的数据库连接,当应用需要与数据库...

    weblogic连接池配置数据库断掉重连的问题

    Weblogic 连接池配置数据库断掉重连的问题 在 Weblogic 中,连接池配置数据库断掉重连是一个非常重要的问题。连接池配置是 Weblogic 中的一种机制,用于管理与数据库的连接。然而,在实际应用中,我们经常会遇到...

    delphi实现数据库连接池

    在IT领域,数据库连接池是一种优化数据库访问性能和资源管理的技术。在Delphi这个强大的Windows应用程序开发环境中,实现数据库连接池能够有效地解决频繁创建和销毁数据库连接带来的性能问题。下面我们将详细探讨...

    数据库连接池 java 整理

    要使用数据库连接池连接到Oracle数据库,首先需要在项目中添加Oracle JDBC驱动的依赖。通常,这可以通过Maven或Gradle等构建工具完成。例如,在Maven的pom.xml文件中,可以添加以下依赖: ```xml &lt;groupId&gt;...

    数据库连接池代码

    数据库连接池是现代Java应用程序中不可或缺的组件,它在提高应用程序性能、管理和优化数据库资源方面起着关键作用。本文将深入探讨基于JDBC的数据库连接池技术,主要针对Oracle数据库,但很多概念同样适用于其他...

    JSP数据库连接池连接实例

    在IT行业中,数据库连接池是优化应用程序性能的关键技术之一,特别是在使用Java服务器页面(JSP)进行Web开发时。数据库连接池允许程序高效地管理与数据库的连接,减少了创建和销毁连接的开销,提高了系统资源利用率...

    数据库连接池选型

    本文将深入探讨“数据库连接池选型”的关键知识点,主要以阿里Druid连接池为例,同时也会涉及连接池的基本原理、功能特性以及如何进行监控配置。 一、数据库连接池基本原理 数据库连接池在初始化时会创建一定数量...

    数据库连接池使用范例

    首先,我们需要理解什么是数据库连接池。数据库连接池是一种管理数据库连接的技术,它预先创建一定数量的数据库连接,并存储在一个池中。当应用程序需要连接数据库时,可以从池中获取一个已存在的连接,而不是每次都...

    数据库连接池 jar包

    首先,我们需要了解什么是数据库连接池。数据库连接池是一种管理数据库连接的技术,它可以保存多个已打开的数据库连接,当应用程序需要访问数据库时,不是直接创建新的连接,而是从池中获取一个已经存在的连接。用完...

    C# 数据库连接池实例

    理解并正确使用C#中的数据库连接池,能够显著提升数据库应用的性能,降低资源消耗,尤其在高并发环境下显得尤为重要。通过合理的配置和编程实践,我们可以充分利用数据库连接池带来的优势,实现高效、稳定的数据库...

    数据库的连接池

    总结来说,通过使用JAVA中的动态代理,我们可以灵活地在数据库连接池中添加监控和管理功能,使得数据库连接的生命周期更加可控,从而提高系统的整体性能和稳定性。而实际的数据库连接池实现,例如Apache的Commons ...

    DBCP数据库连接池

    DBCP作为一款成熟的连接池实现,为开发者提供了稳定、高效的数据库连接管理服务。 DBCP的工作原理主要包括以下几个方面: 1. **连接创建**:在应用启动时,DBCP会根据配置预先创建一定数量的数据库连接,并将这些...

    JAVA数据库连接池类

    - `getIncrementalConnections()` 和 `setIncrementalConnections(int)`:获取和设置当连接池为空或达到最大值前,每次需要增加的连接数量。 - `getMaxConnections()` 和 `setMaxConnections(int)`:获取和设置连接...

    数据库连接池以及hibernate对各种连接池的整合

    2. **Proxool**:它是一个可以将其他类型的JDBC驱动封装进连接池的Java SQL Driver,具有高度可配置性,快速且稳定,能为现有JDBC驱动添加连接池功能。 3. **Jakarta DBCP**:基于Apache Commons Pool的对象池机制...

    数据库连接池c3p0jar包

    数据库连接池是Java开发中非常重要的一个组件,它在处理多线程环境下对数据库资源的高效利用和管理中起着关键作用。C3P0是一个开源的Java连接池实现,它提供了一种灵活且功能强大的数据库连接管理方式。在本文中,...

    轻量级java数据库连接池

    数据库连接池是数据库管理中的重要组成部分,它在Java应用程序中扮演着优化数据库资源分配与管理的角色。本项目提供了一个轻量级的Java数据库连接池实现,旨在简化开发过程,提高应用性能并降低资源消耗。下面将详细...

Global site tag (gtag.js) - Google Analytics