1. 程式人生 > >連線池詳解,c3p0與dbcp的區別!

連線池詳解,c3p0與dbcp的區別!

連線池:

    連線池是建立和管理一個連線的緩衝池的技術,這些連線準備好被任何需要它們的執行緒使用。這項技術能明顯提高對資料庫操作的效能。

  連線池的好處:

(1)對於大多數應用程式,當它們正在處理事務時,僅需要能夠訪問JDBC連線的 1 個執行緒。當不處理事務時,這個連線就會閒置(造成資源的浪費)。相反,連線池允許閒置的連線被其它需要的執行緒使用。

(2)當一個執行緒需要用 JDBC 對一個 資料庫操作時,它從池中請求一個連線。當這個執行緒使用完了這個連線,將它返回到連線池中(連線池會自動收回連線,當然我們也可以在用完以後釋放),這樣這就可以被其它想使用它的執行緒使用,這樣不會照成記憶體的浪費。

(3)當連線被從池中調用出來,那麼這個連線將被這個執行緒專有地使用。

  連線池主要的優點有

 ①減少連線建立時間及資源的使用 :因為連線是迴圈使用的,所以就少了建立連線所需要的時間,更重要的是不會線上程每一次呼叫JDBC的時候都去建立一個新的連線,造成資源浪費。

   ②簡化的程式設計模式:當使用連線池時,每一個單獨的執行緒在使用其中的連線時,就能夠像建立了一個自己的 JDBC 連線一樣操作,允許使用者直接使用JDBC程式設計技術。

    注意:每個連到資料庫的連線在客戶端和伺服器端都有花銷(記憶體,CPU,上下文切換等等)。每個連線均會對應用程式和 資料庫伺服器的可用資源帶來一定的限制。不管這些連線是否在做有用的工作,仍將使用這些資源中的相當一部分。

    連線池能夠使效能最大化,同時還能將資源利用控制在一定的水平之下,如果超過該水平,應用程式將崩潰而不僅僅是變慢。

連線池的運作原理:

      在實際應用開發中,特別是在WEB應用系統中,如果使用JDBC直接訪問資料庫中的資料,每一次資料訪問請求都必須經歷建立資料庫連線、開啟資料庫、存取資料和關閉資料庫連線等步驟,而連線並開啟資料庫是會消耗時間和資源的工作,如果頻繁發生這種資料庫操作,不僅系統的效能會急劇下降,甚至會導致系統崩潰。資料庫連線池技術是解決這個問題最常用的方法,連線池雖然不需要我們自己程式設計,但是,我們作為一名使用者還是要深入瞭解這項技術的,瞭解以後會讓我們使用得心應手。

   資料庫連線池技術的思想非常簡單

       將資料庫連線作為物件儲存在一個Vector陣列中,一旦資料庫連線建立後,不同的資料庫訪問請求就可以共享這些連線,這樣,通過迴圈利用這些已經建立好的資料庫連線,就可以節省我們去不斷建立新連線的是啊進和資源,極大地節省系統資源和時間。

  資料庫連線池的主要操作如下:
(1)建立資料庫連線池物件(伺服器啟動)。
(2)按照事先指定的引數建立初始數量的資料庫連線(即:空閒連線數),我們在安裝資料庫的時候就可以指定。
(3)對於一個數據庫訪問請求,直接從連線池中得到一個連線。如果資料庫連線池物件中沒有空閒的連線,且連線數沒有達到    最大(即:最大活躍連線數),建立一個新的資料庫連線。而如果連線數達到最大,就會再建立事先定好的連線數.
(4)對資料庫進行存取操作。
(5)關閉資料庫,釋放所有資料庫連線(此時的關閉資料庫連線,並非真正關閉,而是將其放入空閒佇列中。如實際空閒連線  數大於初始空閒連線數則釋放連線)。
(6)釋放資料庫連線池物件(伺服器停止、維護期間,釋放資料庫連線池物件,並釋放所有連線)。
  

實現原理:

    百度百科有詳細的記載,我講述的話可能不是那麼的讓您看的懂(能力有限)。

c3p0:

  c3p0與dbcp的定義

    C3P0:C3P0是一個開源的JDBC連線池,它實現了資料來源和JNDI繫結,支援JDBC3規範和JDBC2的標準擴充套件。目前使用它的開源專案有Hibernate,Spring等。
    dbcp:DBCP(DataBase Connection Pool)資料庫連線池,是java資料庫連線池的一種,由Apache開發,通過資料庫連線池,可以讓程式自動管理資料庫連線的釋放和斷開。

  c3p0與dbcp區別:

      dbcp沒有自動回收空閒連線的功能

      c3p0有自動回收空閒連線功能

      兩者主要是對資料連線的處理不同c3p0提供最大空閒時間,dbcp提供最大連線數。前者是如果連線時間超過最大連線時間,就會斷開當前連線。dbcp如果超過最大連線數,就會斷開所有連線。

    c3p0連線池的使用:

    C3P0是一個開源的JDBC連線池,它實現了資料來源和JNDI繫結,支援JDBC3規範和JDBC2的標準擴充套件。
    1.導包  》c3p0-0.9.1.2.jar
    2.匯入配置檔案(不是必須的,但是在企業中一定使用配置檔案)
        如果不使用配置檔案,就要在程式碼中設定資料庫引數4個
        專案分為開發環境和運營環境,在開發時,開發人員接觸不到公司實際資料庫。資料是機密, 但是開發後也要更改資料庫,如果不需要更改程式碼,那就是要使用配置檔案
    3.匯入自己寫的工具類(初始化連線池 獲得連線的方法)。
    4.在dao中使用的工具類獲得連線  或者連線池(有的工具類可以自動幫我們去建立連線)。
    比如dbutil工具類
    
    配置檔案:
        java中的一些鍵值對的配置檔案專門提供了這樣的類和檔名。
        Properties 檔案的字尾名
        Properties讀取.properties檔案的類
        讀取配置檔案
        1.將配置檔案變成流
        2.用java提供的Properties類去載入這個流
        3.呼叫properties物件的getProperties的方法 這個方法需要一個引數 鍵名返回的是一個值(字串型)
   

相關推薦

連線c3p0dbcp區別

連線池:    連線池是建立和管理一個連線的緩衝池的技術,這些連線準備好被任何需要它們的執行緒使用。這項技術能明顯提高對資料庫操作的效能。  連線池的好處:(1)對於大多數應用程式,當它們正在處理事務時,僅需要能夠訪問JDBC連線的 1 個執行緒。當不處理事務時,這個連線就會

連接c3p0dbcp區別

次數 數據庫連接池 data 的區別 其中 數據庫服務 耗時 JD cto 連接池: 連接池是創建和管理一個連接的緩沖池的技術,這些連接準備好被任何需要它們的線程使用。這項技術能明顯提高對數據庫操作的性能。 連接池的好處:(1)對於大多數應用程序,當它們正在處理事務

資料庫連線程式碼實現

一、資料庫連線池概念        資料庫連線池:負責分配、管理和釋放資料庫連線,它允許應用程式重複使用一個現有的資料庫連線,而不是再重新建立一個;釋放空閒時間超過最大空閒時間的資料庫連線來避免因為沒有釋放資料庫連線而引起的資料庫連線遺漏。這項技術能明顯提高對資料庫操作的效

[轉] xargs命令xargs管道的區別

ddd 接受 設計 pad display sof report 程序 at命令 [From] https://www.cnblogs.com/wangqiguo/p/6464234.html 閱讀目錄 為什麽要用xargs,問題的來源 xargs是什麽,與管道有什

httpclient架構原理介紹 & 連線

本篇重點介紹httpclient連線池的相關原理以及介紹,順帶的介紹httpclient傳送請求時的簡單介紹,並會帶上一些原始碼分析。本篇博文是基於httpclient的4.5.2版本進行介紹的。 一、傳送請求的流程原理 幾個關鍵的類和介面介紹 在

int main(int argc,char* argv[])以及int main()有什麼區別

K&R C 上5.10 命令列引數 中介紹的int main(int argc,char* argv[ ]) 在 d:\ 編寫 程式,並命名為 c.c #include int main(int argc, char ** argv) {     int i;

Java執行緒看這篇就夠了

構造一個執行緒池為什麼需要幾個引數?如果避免執行緒池出現OOM?Runnable和Callable的區別是什麼?本文將對這些問題一一解答,同時還將給出使用執行緒池的常見場景和程式碼片段。 基礎知識 Executors建立執行緒池 Java中建立執行緒池很簡單,只需要呼叫Execu

【本人禿頂程式設計師】Java執行緒看這篇就夠了

←←←←←←←←←←←← 快!點關注!!! 構造一個執行緒池為什麼需要幾個引數?如果避免執行緒池出現OOM?Runnable和Callable的區別是什麼?本文將對這些問題一一解答,同時還將給出使用執行緒池的常見場景和程式碼片段。 基礎知識 Executors建立執行緒池 J

Java連線

http://www.javaweb1024.com/java/JavaWebzhongji/2015/06/01/736.html 對於共享資源,有一個很著名的設計模式:資源池(Resource Pool)。該模式正是為了解決資源的頻繁分配﹑釋放所造成的問題。

jedis連線(Redis)

轉自:http://tianxingzhe.blog.51cto.com/3390077/1684306 原子性(atomicity): 一個事務是一個不可分割的最小工作單位,事務中包括的諸操作要麼都做,要麼都不做。 Redis所有單個命令的執行都是原子性的,這與它的單執行緒機制有關; Redis命令

C3P0連線的配置C3P0在高併發加壓下響應時間會變成長。

1、C3p0的使用 init.properties 中的配置 #*******************************連線資料配置引數******************************************************* datasource

spring學習筆記(17)資料庫配置[1]spring資料連線

資料連線池 在spring中,常使用資料庫連線池來完成對資料庫的連線配置,類似於執行緒池的定義,資料庫連線池就是維護有一定數量資料庫連線的一個緩衝池,一方面,能夠即取即用,免去初始化的時間,另一方面,用完的資料連線會歸還到連線池中,這樣就免去了不必要的連線建立

在Eclipse上安裝外掛springsource-tool-suite完美不報錯以及yml無自動提示?

在Eclipse上操作springboot過程中,開啟yml檔案時,為何沒有提示訊息? 答:提示訊息是需要eclipse的一個叫sts的外掛支援的。 為何在eclipse上線上安裝springsource-tool-suite外掛時,總報錯,安裝不成功? 那麼我們需要離

在Eclipse上安裝外掛springsource-tool-suite完美不報錯&&yml為何沒有提示訊息?

在Eclipse上操作springboot過程中,開啟yml檔案時,為何沒有提示訊息? 答:提示訊息是需要eclipse的一個叫sts的外掛支援的。 為何在eclipse上線上安裝springsour

linux命令史上最全

linux常用命令總結,歡迎轉載 一.咿咿呀呀階段    首先先教你們四個熱鍵,學會這四個鍵,收益一輩子。     Tab按鍵---命令補齊功能     Ctrl+c按鍵---停掉正在執行的程式  

Android 屬性動畫屬性動畫基本用法

Hello,大家好,今天要給大家講的是Android 屬性動畫詳解! 在Tween動畫的討論中,我們提到在Android中動畫可以分為三類:①幀動畫②Tween(補間動畫)③Property Anim

Hadoop Hive sql語法5--HiveQLSQL區別

1.hive內聯支援什麼格式?2.分號字元注意什麼問題?3.hive中empty是否為null? 4.hive是否支援插入現有表或則分割槽中? 5.hive是否支援INSERT INTO 表 values()? 1、Hive不支援等值連線 •SQL中對兩表內聯可以寫成:•s

163vip郵箱註冊及登陸方法一分鐘秒懂

fff vpd 註冊 是什麽 oss pro shadow water tom 高效辦公,缺了郵箱可不行,163vip郵箱的註冊及登陸方法是什麽呢?一分鐘!用吃一片厚切牛舌的時間帶你秒懂!註冊 1、在百度搜索TOMvip郵箱,點擊進入2、點擊屏幕右側的“立即註冊按鈕”3、選

【Boost】boost庫asio2——strandio_service區別

[cpp] view plain copy  print? namespace {       // strand提供序列執行, 能夠保證執行緒安全, 同時被post或dispatch的方法, 不會被併發的執行.      // io_service不能保證

全網最詳細的Ceph14.2.5叢集部署及配置檔案快來看看吧 -- <2>

部署Ceph叢集 Ceph版本選擇 Ceph版本來源介紹 Ceph 社群最新版本是 14,而 Ceph 12 是市面用的最廣的穩定版本。 第一個 Ceph 版本是 0.1 ,要回溯到 2008 年 1 月。多年來,版本號方案一直沒變,直到 2015 年 4 月 0.94.1 ( Hammer 的第一個修正版)