網站數據庫連接池作用及配置

2019-09-11

網站數據庫連接池作用及配置;
連接池用于創建和(hé)管理(lǐ)數據庫連接的(de)緩沖池技術,緩沖池中的(de)連接可(kě)以被任何需要他們的(de)線程使用。當一(yī)個線程需要用JDBC對一(yī)個數據庫操作時,将從池中請求一(yī)個連接。當這個連接使用完畢後,将返回到連接池中,等待為(wèi)其他的(de)線程服務。

3a79fce373b638830bbdbef349e5230b.jpg

 連接池的(de)主要優點有以下三個方面。

  1、減少連接創建時間。連接池中的(de)連接是已準備好的(de)、可(kě)重複使用的(de),獲取後可(kě)以直接訪問數據庫,因此減少了連接創建的(de)次數和(hé)時間。

  2、簡化的(de)編程模式。當使用連接池時,每一(yī)個單獨的(de)線程能夠像創建一(yī)個自(zì)己的(de)JDBC連接一(yī)樣操作,允許用戶直接使用JDBC編程技術。
  3、控制資源的(de)使用。如(rú)果不使用連接池,每次訪問數據庫都需要創建一(yī)個連接,這樣系統的(de)穩定性受系統連接需求影響很大,很容易産生資源浪費和(hé)高(gāo)負載異常。連接池能夠使性能最大化,将資源利用控制在一(yī)定的(de)水平之下。連接池能控制池中的(de)連接數量,增強了系統在大量用戶應用時的(de)穩定性。

 下面,簡單的(de)闡述下連接池的(de)工作原理(lǐ)。

  連接池技術的(de)核心思想是連接複用,通過建立一(yī)個數據庫連接池以及一(yī)套連接使用、分配和(hé)管理(lǐ)策略,使得該連接池中的(de)連接可(kě)以得到高(gāo)效、安全的(de)複用,避免了數據庫連接頻繁建立、關閉的(de)開銷。
連接池的(de)工作原理(lǐ)主要由三部分組成,分别為(wèi)連接池的(de)建立、連接池中連接的(de)使用管理(lǐ)、連接池的(de)關閉。

1、連接池的(de)建立。一(yī)般在系統初始化時,連接池會根據系統配置建立,并在池中創建了幾個連接對象,以便使用時能從連接池中獲取。連接池中的(de)連接不能随意創建和(hé)關閉,這樣避免了連接随意建立和(hé)關閉造成的(de)系統開銷。Java中提供了很多容器類可(kě)以方便的(de)構建連接池,例如(rú)Vector、Stack等。

2、連接池的(de)管理(lǐ)。連接池管理(lǐ)策略是連接池機制的(de)核心,連接池內(nèi)連接的(de)分配和(hé)釋放對系統的(de)性能有很大的(de)影響。
其管理(lǐ)策略是:當客戶請求數據庫連接時,首先查看連接池中是否有空閑連接,如(rú)果存在空閑連接,則将連接分配給客戶使用;如(rú)果沒有空閑連接,則查看當前所開的(de)連接數是否已經達到最大連接數,如(rú)果沒達到就重新創建一(yī)個連接給請求的(de)客戶;如(rú)果達到就按設定的(de)最大等待時間進行等待,如(rú)果超出最大等待時間,則抛出異常給客戶。
 當客戶釋放數據庫連接時,先判斷該連接的(de)引用次數是否超過了規定值,如(rú)果超過就從連接池中删除該連接,否則保留為(wèi)其他客戶服務。
該策略保證了數據庫連接的(de)有效複用,避免頻繁的(de)建立、釋放連接所帶來的(de)系統資源開銷。

3、連接池的(de)關閉。當應用程序退出時,關閉連接池中所有的(de)連接,釋放連接池相關的(de)資源,該過程正好與創建相反。

140528263.png

數據庫連接池的(de)作用以及配置;
連接池是創建和(hé)管理(lǐ)多個連接的(de)一(yī)種技術,這些連接可(kě)被需要使用它們的(de)任何線程使用。連接池技術基于下述事實:對于大多數應用程序,當它們正在處理(lǐ)通常需要數毫秒完成的(de)事務時,僅需要能夠訪問JDBC連接的(de)1個線程。未處理(lǐ)事務時,連接處于閑置狀态。使用連接池,允許其他線程使用閑置連接來執行有用的(de)任務。
事實上,當某一(yī)線程需要用JDBC在MySQL或其他數據庫上執行操作時,需要用到由連接池提供的(de)連接。使用連接完成線程後,線程會将連接返回給連接池,以便該連接能夠被其他需要使用連接的(de)線程使用。從連接池“借出”連接時,該連接僅供請求它的(de)線程使用。從編程觀點看,其效果等同于每次需要JDBC連接時調用DriverManager.getConnection(),但是,采用連接池技術,可(kě)通過使用新的(de)或已有的(de)連接結束線程。連接池技術能顯著增加Java應用程序的(de)性能,同時還能降低(dī)資源使用率。

連接池技術的(de)主要優點包括:
(1) 縮短(duǎn)了連接創建時間

創建新的(de)JDBC連接會導緻聯網操作和(hé)一(yī)定的(de)JDBC驅動開銷,如(rú)果這類連接是“循環”使用的(de),使用該方式,可(kě)避免這類不利因素。
(2)簡化的(de)編程模型
使用連接池技術時,每個單獨線程能夠像創建了自(zì)己的(de)JDBC連接那樣進行操作,從而允許使用直接的(de)JDBC編程技術。
(3)受控的(de)資源使用
如(rú)果不使用連接池技術,而是在每次需要時為(wèi)線程創建新的(de)連接,那麽應用程序的(de)資源使用将十分浪費,而且在負載較重的(de)情況下會導緻無法預期的(de)結果。
注意,與數據庫的(de)每個連接均會在客戶端和(hé)服務器端造成一(yī)定的(de)開銷(CPU、關聯轉換等)。
每個連接均會對應用程序和(hé)數據庫服務器的(de)可(kě)用資源帶來一(yī)定的(de)限制。無論連接是否執行任何有用的(de)任務,仍将使用這些資源中的(de)相當一(yī)部分。
連接池能夠使性能最大化,同時還能将資源利用控制在一(yī)定的(de)水平之下,如(rú)果超過該水平,應用程序将崩潰而不僅僅是變慢。幸運的(de)是,Sun公司通過JDBC-2.0“可(kě)選”接口,完成了JDBC中連接池概念的(de)标準化實施,所有主要應用服務器均實施了能夠與MySQL Connector/J一(yī)起良好工作的(de)
這類API。

通常,你可(kě)以在應用服務器的(de)配置文件中配置連接池,并通過Java命名和(hé)目錄接口(JNDI)訪問它。
使用連接池時需要牢記的(de)最重要事項是,無論在代碼中出現了什麽(異常、控制流等),連接以及由連接創建的(de)任何部分(語句、結果集等)均應被關閉,以便能再次使用它們。如(rú)不然,它們将糾纏在一(yī)起,在最好的(de)情況下,意味着它們所代表的(de)數據庫服務器資源(緩沖區、鎖定、套接字等)可(kě)能會捆綁一(yī)段時間,在最壞的(de)情況下,可(kě)能會導緻永久捆綁。
連接池的(de)最佳大小是什麽?
取決于具體情況。盡管最佳大小取決與預期的(de)負載和(hé)平均的(de)數據庫事務時間,最佳的(de)連接池大小小于你的(de)預期。
例如(rú),如(rú)果使用的(de)是Sun公司的(de)Java Petstore Blueprint應用程序,對于包含15~20個連接的(de)連接池,使用MySQL和(hé)Tomcat,在可(kě)接受的(de)相應時間下,可(kě)服務于中等程度的(de)負載(600個并發用戶)。
要想确定用于應用程序的(de)連接池大小,應使用諸如(rú)Apache Jmeter或The Grinder等工具創建負載測試腳本,并對應用程序進行負載測試。确定出
發點的(de)一(yī)種簡單方法是,将連接池的(de)最大連接數配置為(wèi)“無限”,運行負載測試,并測量最大的(de)并發連接數。随後,應進行反向操作,确定出使應
用程序具有最佳性能的(de)連接池的(de)最小和(hé)最大值。

連接池與數據源區别?
數據庫連接池是在應用程序啓動時建立足夠的(de)數據庫連接,并将這些連接組
成一(yī)個連接池,由應用程序動态地(dì)對池中的(de)連接進行申請、使用和(hé)釋放。
對于多于連接池中連接數的(de)并發請求,應在請求隊列中排隊等待。并且應用程序可(kě)根據池中連接的(de)使用率,動态增加或減少池中的(de)連接數。當關閉連接操作時,連接并不真正的(de)關閉,而是返回到連接池中作為(wèi)空閑連接在後面繼續使用,連接池技術解決了數據庫連接頻繁打開關閉所帶來的(de)性能問題。
有了連接池,我們沒必要直接找數據源打交道(dào)了,連接池在你的(de)程序所在的(de)機器內(nèi)存,數據源不一(yī)定,并且數據源和(hé)連接池會保持一(yī)定數量
的(de)連接,這樣我們訪問數據庫的(de)時候就不需要找數據源要連接,直接在本地(dì)內(nèi)存中取得連接,可(kě)以提高(gāo)程序的(de)性能。連結池的(de)存在是為(wèi)了效率,因為(wèi)實例化一(yī)個連接很耗費資源,而連接又有可(kě)重用的(de)特征,所以可(kě)以把一(yī)定數量的(de)連接放在連接池裏面以提高(gāo)效率。

責任編輯:中山網站建設
 【網訊網絡】國(guó)家高(gāo)新技術企業》十年(nián)專注軟件開發,網站建設,網頁設計,APP開發,小程序,微信公衆号開發,定制各類企業管理(lǐ)軟件(OA、CRM、ERP、訂單管理(lǐ)系統、進銷存管理(lǐ)軟件等)!服務熱線:0760-88610046、13924923903,http://www.wansion.net

您的(de)項目需求咨詢熱線:0760-88610046(國(guó)家高(gāo)新技術企業)

*請認真填寫需求,我們會在24小時內(nèi)與您取得聯系。