1. 程式人生 > >說出資料連線池的工作機制是什麼

說出資料連線池的工作機制是什麼

J2EE伺服器啟動時會建立一定數量的池連線,並一直維持不少於此數目的池連線。


   呼叫:客戶端程式需要連線時,池驅動程式會返回一個未使用的池連線並將其表記為 忙。如果當前沒有空閒連線,池驅動程式就新建一定數量的連線,新建連線的數量有配置引數決定。


釋放:當使用的池連線呼叫完成後,池驅動程式將此連線表記為空閒, 其他呼叫就可以使用這個連線。

--------------------------------------------------------分割線-----------------------------------------------------------------

最大維持連線數:沒有任何請求時在連線池中可以存在的連線數

最大連線數:連線池中最多可以存在的連線個數。

最大等待時間:當斷開連線時,超過最大維持連線數的連線不會馬上銷燬,最大等待時間過後它才會銷燬。

連線池是將已經建立好的連線儲存在池中,當有請求來時,直接使用已經建立好的連線對資料庫進行訪問。這樣省略了建立連線和銷燬連線的過程。

現在假設:最大維持連線數是10,最大連線數是20,最大等待時間是10000(毫秒)

其過程:最開始在連線池中有10個連線(最大連線數),當有使用者申請連線時,其將一個連線分配使用者,直到連線池中的10個連線全都分配出去,當第11個使用者申請連線時,它將建立第11個連線並分配給該使用者,直到把第20個連線(最大連線數)分配給第20個使用者,當第21個使用者申請連線時,它需要等待,直到前面的20個使用者中某一個斷開了連線,才會把那個連線分配給第21個使用者,當用戶斷開連線時(第11至20個連線),該連線不會立刻被釋放而是需要等待10000毫秒(最大等待時間),才被釋放,當沒有使用者連線時,連線池內還保持10個連線。

在開發中,使用連線池時若沒有關閉連線(呼叫連線的close方法)會出現“連線池疲勞的錯誤”。

資料連線池的主要作用是什麼?

資料連線池是把資料庫連線放到中間伺服器上,比如tomcat上,那麼相當於每次你操作資料庫的時候就不需要再"連線"到資料庫再進行相關操作,而是直接操作伺服器上的"連線池",你可以根據字面意思進行理解,把資料庫當做一條小溪,那麼"連線池"就是一個"水池",這個水池裡面的水是由事先架好的通向"小溪"的水管引進來的,所以,你想喝水的時候不必大老遠地跑到小溪邊上,而只要到這個水池就可以.這樣的話就可以提高"效率".但是資料池一般是用在資料量比較大的專案,這樣可以提高程式的效率,想一想這樣的話是不是就把相關的負荷加在了伺服器上,因為這個"池"是在伺服器上的,對於小資料量處理的專案不推薦使用,應為過於頻繁的請求會使得伺服器負載加重

關係:

  你 -->"水池"-->小溪(快速喝水)

  程式-->"資料池"-->資料庫(快速存取)

就是這樣,也不用把它想神祕了,我是這樣理解的,也就這樣說了,希望對你有幫助

資料連線池怎麼設定?

在資料庫連線欄位的時候可以設定

比如:“DataSource=Server;Initial;Catalog=db;UserID=test;Password=test;

  MaxPoolSize = 100;MinPoolSize= 15”

這樣 連線池 最大為100,最小為15

首先說明下關於資料庫連線池:
      資料庫連線是一種關鍵的有限的昂貴的資源,這一點在多使用者的網頁應用程式中體現得尤為突出。對資料庫連線的管理能顯著影響到整個應用程式的伸縮性和健壯性,影響到程式的效能指標。資料庫連線池正是針對這個問題提出來的。 
資料庫連線池負責分配、管理和釋放資料庫連線,它允許應用程式重複使用一個現有的資料庫連線,而再不是重新建立一個;釋放空閒時間超過最大空閒時間的資料庫連線來避免因為沒有釋放資料庫連線而引起的資料庫連線遺漏。這項技術能明顯提高對資料庫操作的效能。 
       資料庫連線池在初始化時將建立一定數量的資料庫連線放到連線池中,這些資料庫連線的數量是由最小資料庫連線數來設定的。無論這些資料庫連線是否被 使用,連線池都將一直保證至少擁有這麼多的連線數量。連線池的最大資料庫連線數量限定了這個連線池能佔有的最大連線數,當應用程式向連線池請求的連線數超 過最大連線數量時,這些請求將被加入到等待佇列中。


資料庫連線池的最小連線數和最大連線數的設定要考慮到下列幾個因素:
1) 最小連線數是連線池一直保持的資料庫連線,所以如果應用程式對資料庫連線的使用量不大,將會有大量的資料庫連線資源被浪費; 
2) 最大連線數是連線池能申請的最大連線數,如果資料庫連線請求超過此數,後面的資料庫連線請求將被加入到等待佇列中,這會影響之後的資料庫操作。 
3) 如果最小連線數與最大連線數相差太大,那麼最先的連線請求將會獲利,之後超過最小連線數量的連線請求等價於建立一個新的資料庫連線。不過,這些大於最小連線數的資料庫連線在使用完不會馬上被釋放,它將被放到連線池中等待重複使用或是空閒超時後被釋放。

相關推薦

資料連線工作機制是什麼

J2EE伺服器啟動時會建立一定數量的池連線,並一直維持不少於此數目的池連線。    呼叫:客戶端程式需要連線時,池驅動程式會返回一個未使用的池連線並將其表記為 忙。如果當前沒有空閒連線,池驅動程式就新建一定數量的連線,新建連線的數量有配置引數決定。 釋放:當使用的池連

資料連線工作機制是什麼?

J2EE伺服器啟動時會建立一定數量的池連線,並一直維持不少於此數目的池連線。    呼叫:客戶端程式需要連線時,池驅動程式會返回一個未使用的池連線並將其表記為 忙。如果當前沒有空閒連線,池驅動程式就新建一定數量的連線,新建連線的數量有配置引數決定。 釋放:當使用的池連線呼叫

資料庫連線工作機制

資料庫欄位設計  正確認識資料冗餘 主鍵與外來鍵在多表中的重複出現, 不屬於資料冗餘,這個概念必須清楚,事實上有許多人還不清楚。 非鍵欄位的重複出現, 才是資料冗餘!而且是一種低階冗餘,即重複性的冗餘。 高階冗餘不是欄位的重複出現,而是欄位的派生出現。 【例4】:商品中的“單價、數量、金額”三個

web———資料連線工作機制是什麼?

1.資料庫連線池屬於建立時間昂貴,並且數量有限的資源。如果每次執行sql時都建立新的連線,使用完即刻關閉連線,不僅會造成資源的浪費,而且在併發量大的情況下還會拖慢甚至拖垮資料庫。(測試得出結果單獨執行緒建立資料庫建立時間遠遠大於執行時間) 2. 因此需要使用連線池的概念:預先建立好一批資

資料連線工作機制是什麼?

  資料庫連線是一種關鍵的有限的昂貴的資源,這一點企業級應用程式中體現得尤為突出。對資料庫連線的管理能顯著影響到整個應用程式的伸縮性和健壯性,影響到程式的效能指標。資料庫連線池正是針對這個問題提出來的。     資料庫連線池負責分配、管理和釋放資料庫連線,它允許應用程式重

資料連線工作機制是什麼

資料連線池是把資料庫連線放到中間伺服器上,比如tomcat上,那麼相當於每次你操作資料庫的時候就不需要再"連線"到資料庫再進行相關操作,而是直接操作伺服器上的"連線池",.這樣的話就可以提高"效率".但是資料池一般是用在資料量比較大的專案,這樣可以提高程式的效率,想一想這樣的

資料連線工作原理

轉自:http://www.uml.org.cn/sjjm/201004153.asp 隨著資訊科技的高速發展與廣泛應用,資料庫技術在資訊科技領域中的位置越來越重要,尤其是網路應用和電子商務的迅速發展,都需要資料庫技術支援動 態Web站點的執行,而傳統的開發模式是:首先在主

圖解線程工作機制,手寫線程

實現 有用 trace test 滿了 all 函數 tor runtime ThreadPoolExecutor構造函數的各個參數說明 public ThreadPoolExecutor(int corePoolSize,//線程池中核心線程數

初識資料連線

什麼是資料連線池? 資料庫連線池負責分配、管理和釋放資料庫連線,它允許應用程式重複使用一個現有的資料庫連線,而不是再重新建立一個;釋放空閒時間超過最大空閒時間的資料庫連線來避免因為沒有釋放資料庫連線而引起的資料庫連線遺漏。 為什麼要使用資料連線池? 原因:建立資料庫連線是相當耗時和耗費資

測試c3p0資料連線的使用----簡單筆記

加入jar包 上程式碼 配置檔案 <c3p0-config> <!-- This app is massive! --> <named-config name="myconfig"> <!-- 設定常用

解決Tomcat資料連線無法釋放

近段時間,公司的檢測中心報表系統(SMC)的開發人員時不時找到我,說使用者老是出現無法登入的情況。前些日子因為手頭上有 Jboss 叢集的測試工作,發現使用者不能登入時,都是在 Tomcat 中將這個專案 Reload 一下就好了,不過只是治標而已,因為大概幾個小時之後又會再次出現無法登入的情況。 今天上

idea配置阿里Druid資料連線在SSM框架中使用

阿里Druid資料連線池在SSM框架中的配置使用 一、Druid資料連線池簡介 Druid是Java語言中最好的資料庫連線池。Druid能夠提供強大的監控和擴充套件功能。 效能好,同時自帶監控頁面,可以實時監控應用的連線池情況以及其中效能差的sql,方便我們找出應用中連線池方面的問題。

二十四、併發程式設計之簡易資料連線

public class MyDataSource { private LinkedList<Connection> pool = new LinkedList(); //連結串列放連線池用 private static final int INIT_CONNECTION

資料連線——JNDI

資料庫連線有很多中方式,JDBC資料庫的連線方式,前邊我們已經介紹過了,而開發中我們經常使用的是DataBaseConnectionPool(資料庫連線池,DBCP)。資料庫連線池到底是什麼?它比jdbc資料庫連線有什麼優勢呢?它又怎麼使用呢? 一,先看一下JDBC連線,

與spring整合的幾種資料連線

資料來源概述 資料庫連線是一種關鍵的有限的昂貴的資源,這一點在多使用者的網頁應用程式中體現得尤為突出。對資料庫連線的管理能顯著影響到整個 應用程式的伸縮性和健壯性,影響到程式的效能指標。資料庫連線池正是針對這個問題提出來的。   資料庫連線池負責分配、管理

執行緒工作機制與原理

書接上文,Java執行緒池。 接下來記錄一下執行緒池的工作機制和原理 執行緒池的兩個核心佇列: 執行緒等待池,即執行緒佇列BlockingQueue。任務處理池(PoolWorker),即正在工作的Thread列表(HashSet<Worker>)。 執行緒

資料連線預設配置帶來的坑testOnBorrow=false,cloes_wait 終於解決了

首先說一下自己程式中遇到的問題,前一段新寫了一個專案,主要為方便公司業務切庫做準備,為其他專案提供介面(spring boot 專案<spring boot + mongo data jpa+mybatis>) 首先呢 多資料來源沒有使用spring boot 整合mybatis,開始有過自己

Druid資料連線原始碼分析

Druid是阿里巴巴公司的資料庫連線池工具,昨天突然想學習一下阿里的druid原始碼,於是下載下來分析了一下。也就2個多小時粗略看了一下,中間有些知識點沒見過,不懂,現查BAIDU學習。簡單總結一下,邊總結邊繼續看程式碼,估計錯誤不少,歡迎指正!      在自己看之前,想找找druid原始碼分析,居然在B

Java中資料庫連線原理機制的詳細講解

連線池的基本工作原理   1、基本概念及原理   由上面的分析可以看出,問題的根源就在於對資料庫連線資源的低效管理。我們知道,對於共享資源,有一個很著名的設計模式:資源池 (Resource Pool)。該模式正是為了解決資源的頻繁分配?釋放所造成的問題。為解決上述問

spring配置hibernate 資料來源(資料連線)

現在常用的開源資料連線池主要有c3p0、dbcp和proxool三種,其中:  hibernate開發組推薦使用c3p0;  spring開發組推薦使用dbcp(dbcp連線池有weblogic連線池同樣的問題,就是強行關閉連線或資料庫重啟後,無法reconnect,