【问题标题】:What is the benefit of Connection and Statement Pooling?连接和语句池有什么好处?
【发布时间】:2010-10-02 05:16:12
【问题描述】:

有人能解释一下什么是连接和语句池,以及与未池化的数据源相比有什么好处吗?我试图了解在项目中使用 c3p0 或 proxool 等技术何时是个好主意。我首先需要了解它们的作用以及何时使用它们很有趣。非常感谢。

【问题讨论】:

    标签: database connection-pooling c3p0


    【解决方案1】:

    快乐的连接

    每次都可以轻松创建新连接。 一行:仅此而已。没什么好想的。美好的生活。

    等一下。你吃盘子吗?

    每次使用后你都会扔掉你的盘子吗?

    不用,你把它洗干净放在碗碟架上,这样你下一顿饭就可以再用了。每次都买新盘子是不可能的。如果你这样做了,一年后你就浪费了足够的钱来购买一台新 iPad。

    再次考虑连接池。

    但这一次,连接是你的盘子,连接池是你的盘子架。你的钱包和你的能量代表了系统资源(内存和带宽)。

    洗还是花?

    你更愿意做什么:

    一个。洗碗

    b.还是每顿饭都跑到商场买新盘子?

    虽然连接池涉及一些任务,但从长远来看,与每次创建新连接相比,它的工作量更少。关键是要知道您的家人(应用程序)在任何一天需要多少板(连接)。

    池可用于数据库连接、线程、实体 bean 和其他工厂派生对象。

    【讨论】:

      【解决方案2】:

      我对c3p0不熟悉,但是池化连接和语句的好处包括:

      1. 性能。连接到数据库既昂贵又缓慢。池连接可以保持物理连接到数据库,并在需要数据库访问的各种组件之间共享。这样,连接成本一次性支付,并在所有消费组件中分摊。

      2. 诊断。如果您有一个子系统负责连接到数据库,那么诊断和分析数据库连接使用情况会变得更容易。

      3. 可维护性。同样,如果您有一个负责分发数据库连接的子系统,那么您的代码将比每个组件都连接到数据库本身更容易维护。

      【讨论】:

        【解决方案3】:

        引用JAVA Persistance with Hibernate一书

        使用 a 的三个原因 池:

        • 获取新连接的成本很高。一些数据库管理 系统甚至开始一个全新的 每个连接的服务器进程。

        • 维护许多空闲连接对于数据库管理来说代价高昂 系统,并且池可以优化 空闲连接的使用(或 如果没有请求,请断开连接)。

        • 对于某些驱动程序来说,创建准备好的语句也很昂贵,而且 连接池可以缓存语句 用于跨请求的连接。

        【讨论】:

          【解决方案4】:

          创建到数据库服务器的网络连接是(相对)昂贵的。 同样,要求服务器准备一条 SQL 语句是(相对)昂贵的。

          使用连接/语句池,您可以重用现有的连接/准备好的语句,避免启动连接、解析 SQL 等成本。

          【讨论】:

            【解决方案5】:

            从数据库连接和断开连接是一项昂贵的操作。通过使用池,您可以编写代码来打开和关闭连接,但池决定何时实际执行此操作,从而在一定时间内打开一定数量的连接。

            语句池?你说的是语句缓存吗?

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2014-07-07
              • 2011-08-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多