`
bk_lin
  • 浏览: 340070 次
社区版块
存档分类
最新评论

连接池---一种高性能的解决方案

阅读更多

        最近在做一个移动的开发项目,整个项目兼有后台和客户端,客户端是安装在android终端上的,需要和服务器端进行庞大的数据交互。之前虽然有做过一些Web端的数据库编程,但是还知识停留在了练习和学习的水平上,有很多现实的问题并没有考虑非常多。但是这次接触的是一个商业项目,而且预估的用户群是一个非常庞大的群体,所以我们不能忽视用户的操作感受,不能让用户有太久的等待,这样是不符合一款优秀产品设计初衷的,而且也是背离市场的。

       经过一位大牛学长的讲解后,对连接池的强大深感膜拜。。。。Orz。。。

      So,接下来就是要好好研究一下连接池的原理了,这样我们才能更好的学以致用微笑

      首先我们需要来说一下连接池的优势和有点:

        1.减少连接创建时间

虽然与其它数据库相比 GBase 提供了较为快速连接功能,但是创建新的 JDBC 连接仍会招致网络和 JDBC 驱动的开销。如果这类连接是“循环”使用的,使用该方式这些花销就可避免。  2.简化的编程模式  当使用连接池时,每一个单独的线程能够像创建了一个自己的 JDBC 连接一样操作,允许用户直接使用JDBC编程技术。  3.受控的资源使用  如果用户不使用连接池,而是每当线程需要时创建一个新的连接,那么用户的应用程序的资源使用会产生非常大的浪费并且可能会导致高负载下的异常发生。  注意,每个连到 GBase 的连接在客户端和服务器端都有花销(内存,CPU,上下文切换等等)。每个连接均会对应用程序和 GBase 服务器的可用资源带来一定的限制。不管这些连接是否在做有用的工作,仍将使用这些资源中的相当一部分。  连接池能够使性能最大化,同时还能将资源利用控制在一定的水平之下,如果超过该水平,应用程序将崩溃而不仅仅是变慢。

 

       看到如此诸多优点,可见连接池在大数据模型中还是能够显著提高效能的。

       在实际应用开发中,特别是在WEB应用系统中,如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库是一件既消耗资源又费时的工作,如果频繁发生这种数据库操作,系统的性能必然会急剧下降,甚至会导致系统崩溃。数据库连接池技术是解决这个问题最常用的方法,在许多应用程序服务器(例如:Weblogic,WebSphere,JBoss)中,基本都提供了这项技术,无需自己编程,但是,深入了解这项技术是非常必要的。

 

数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个Vector对象中,一旦数据库连接建立后,不同的数据库访问请求就可以共享这些连接,这样,通过复用这些已经建立的数据库连接,可以克服上述缺点,极大地节省系统资源和时间。  数据库连接池的主要操作如下:  (1)建立数据库连接池对象(服务器启动)。  (2)按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。  (3)对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。  (4)存取数据库。  (5)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。  (6)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。

 

       连接池给我们在设计大用户连接处理时提供了有效的解决方案,能够在一定资源耗费程度上给我们的项目提供最好的用户体验和软件的稳定性,所以连接池确实是一个好东西。。。奋斗

4
5
分享到:
评论
2 楼 bingki 2012-05-30  
这算哪门子解决方案?
1 楼 lykm02 2012-05-30  
呃,被标题骗了。。
怎么感觉是讲连接池是个好东西。
但是,首先讲下连接池吧。。
其实,连接池就是一个 connection pool.
同时复用这些connection.
思想类似于 cache.

相关推荐

    Mongodb连接池for java

    MongoDB连接池是解决数据库连接管理和复用的一种机制,旨在提高应用的并发能力,减少创建和销毁连接的开销,同时确保在高并发场景下的稳定性和响应速度。 标题“MongoDB连接池for Java”指的是在Java环境中,针对...

    C#高效数据库连接池源码

    数据库连接池是一种对象池设计模式的应用,它维护了一组已打开的数据库连接,而不是每次需要时都创建新的连接。应用程序在需要时从池中获取连接,使用完毕后归还,而不是关闭。这样减少了频繁创建和关闭连接的开销...

    WebSphere参数讲解-连接池方面

    连接池是一种用于管理数据库连接的技术。它通过预先创建一定数量的数据库连接,并将其保存在一个池中,以便应用程序可以重复使用这些连接,从而避免了每次访问数据库时都需要重新建立连接所带来的性能开销。连接池...

    mysql连接池java源码

    MySQL连接池在Java应用开发中扮演着至关重要的角色,它是一种管理数据库连接的机制,能够有效地提高数据库操作的性能和效率。在这个项目中,我们看到的是一个纯手工编写的Java源码实现,不依赖任何外部数据库驱动,...

    Java 连接池实现

    Java连接池(Connection Pool)就是一种有效的解决方案,它提高了数据库访问效率,减少了系统资源消耗。本篇我们将深入探讨Java连接池的实现及其重要性。 首先,我们要理解什么是数据库连接池。数据库连接池在初始...

    一个比较好手写连接池

    总之,手写连接池虽然可能不如现成的解决方案那样功能完备,但在特定场景下,尤其是对资源和性能要求不高的小项目,它能提供一种简洁、灵活的选择。开发者可以根据自己的需求定制连接池的特性和行为,从而更好地适应...

    一个好用的连接池类,用于数据库连接等方面

    连接池(Connection Pool)就是一种有效的解决方案,它有效地解决了数据库连接的创建与销毁带来的开销问题。本文将深入探讨“一个好用的连接池类”,以及如何将其应用到数据库连接和其他资源分配中。 首先,连接池...

    DBCP(数据库连接池)

    总的来说,DBCP作为一款老牌的数据库连接池工具,对于小型项目或者学习使用是足够的,但对于大型、高并发的应用场景,可能需要考虑更先进的解决方案。理解并掌握数据库连接池的工作原理和使用方法,对优化Java应用...

    oracle 数据库,在C++中用连接池实现高速连接与访问.rar

    连接池是一种数据库资源管理技术,它可以预先创建并维护一定数量的数据库连接,供多个客户端请求共享使用。这样做的好处在于减少频繁创建和销毁连接的开销,提高系统性能,并有效控制并发访问的数量,防止资源耗尽。...

    Domino连接池解决方案

    【Domino连接Oracle解决方案】 在IT领域,尤其是在企业级应用中,数据集成是常见的需求。本文主要探讨如何在Domino环境中使用Java通过JDBC连接Oracle数据库,实现数据的交互。Domino,作为IBM Lotus Notes的基础,...

    DELPHI DataSnapXE连接池类

    它允许开发者创建可扩展、安全且高性能的服务器端解决方案,并通过多种客户端进行访问。在这个上下文中,"连接池"是一个关键的概念,它提高了数据库访问的效率和性能。 连接池是一种资源管理技术,用于存储和管理...

    手动设计自定义数据库连接池

    数据库连接池是一种用于管理与数据库建立连接的技术方案。它通过维护一个预设的连接集合,来实现对数据库连接的高效利用。连接池的核心价值在于提高了数据库访问效率,降低了资源消耗,尤其是在高并发场景下,它能够...

    Java连接池评估报告

    4. **C3P0**:被广泛应用于Hibernate框架中,是一个成熟稳定的连接池解决方案。 5. **BoneCP**:一种较新的连接池实现,据称具有出色的性能。 6. **DbConnectionBroker** 和 **MiniConnectionPoolManager**:这两种...

    Proxool连接池jar包

    Proxool连接池是数据库连接管理的一个开源工具,它提供了一种高效且灵活的方式来管理和复用数据库连接,以提升...在选择和使用数据库连接池时,需要根据项目需求考虑其特性、性能和兼容性,以选择最适合的解决方案。

    数据库连接池案例包括c3p0,druid,和自己手写的连接池

    尽管已有成熟的连接池解决方案,但有时为了满足特定的需求或进行性能优化,开发者会选择自定义连接池。自定义连接池的基本思想是维护一个连接池,当应用需要连接时从池中获取,用完后归还。核心部分包括连接的创建、...

    MVC模式下数据库连接池的Web应用方案

    为了解决上述问题,引入数据库连接池技术成为了一个可行的解决方案。连接池技术的核心在于减少数据库连接的频繁建立与断开,从而提高系统的整体性能。 ##### 2.1 数据库连接池如何提高连接效率 数据库连接池是一种...

    数据库连接池

    数据库连接池是一种用于管理与数据库连接的技术,能够有效地提高系统的性能并降低资源消耗。常见的数据库连接池实现包括C3P0、DBCP以及近年来逐渐受到关注的阿里Druid数据源。本文将详细介绍这三种连接池的特点及其...

    数据库连接池驱动包_数据库连接池驱动包_

    Druid 是阿里巴巴开源的一个强大、全面且高性能的Java数据库连接池。它不仅提供了基础的连接池功能,还集成了监控、SQL解析、拦截器等功能,可以帮助开发者进行性能分析和问题定位。Druid 还支持多种数据库,包括 ...

    Socket连接池的简单应用

    为此,本文档介绍了一种解决这些问题的方法——Socket连接池技术,并通过具体实例来展示如何在客户端和服务端之间实现这一技术。 #### 二、Socket连接的基础概念 在深入探讨Socket连接池之前,我们需要了解两种...

Global site tag (gtag.js) - Google Analytics