2019-09-11
網站數據庫連接池作用及配置;
連接池用于創建和管理數據庫連接的緩沖池技術,緩沖池中(zhōng)的連接可以被任何需要他們的線程使用。當一(yī)個線程需要用JDBC對一(yī)個數據庫操作時,将從池中(zhōng)請求一(yī)個連接。當這個連接使用完畢後,将返回到連接池中(zhōng),等待爲其他的線程服務。
連接池的主要優點有以下(xià)三個方面。
1、減少連接創建時間。連接池中(zhōng)的連接是已準備好的、可重複使用的,獲取後可以直接訪問數據庫,因此減少了連接創建的次數和時間。
2、簡化的編程模式。當使用連接池時,每一(yī)個單獨的線程能夠像創建一(yī)個自己的JDBC連接一(yī)樣操作,允許用戶直接使用JDBC編程技術。
3、控制資(zī)源的使用。如果不使用連接池,每次訪問數據庫都需要創建一(yī)個連接,這樣系統的穩定性受系統連接需求影響很大(dà),很容易産生(shēng)資(zī)源浪費(fèi)和高負載異常。連接池能夠使性能最大(dà)化,将資(zī)源利用控制在一(yī)定的水平之下(xià)。連接池能控制池中(zhōng)的連接數量,增強了系統在大(dà)量用戶應用時的穩定性。
下(xià)面,簡單的闡述下(xià)連接池的工(gōng)作原理。
連接池技術的核心思想是連接複用,通過建立一(yī)個數據庫連接池以及一(yī)套連接使用、分(fēn)配和管理策略,使得該連接池中(zhōng)的連接可以得到高效、安全的複用,避免了數據庫連接頻(pín)繁建立、關閉的開(kāi)銷。
連接池的工(gōng)作原理主要由三部分(fēn)組成,分(fēn)别爲連接池的建立、連接池中(zhōng)連接的使用管理、連接池的關閉。
1、連接池的建立。一(yī)般在系統初始化時,連接池會根據系統配置建立,并在池中(zhōng)創建了幾個連接對象,以便使用時能從連接池中(zhōng)獲取。連接池中(zhōng)的連接不能随意創建和關閉,這樣避免了連接随意建立和關閉造成的系統開(kāi)銷。Java中(zhōng)提供了很多容器類可以方便的構建連接池,例如Vector、Stack等。
2、連接池的管理。連接池管理策略是連接池機制的核心,連接池内連接的分(fēn)配和釋放(fàng)對系統的性能有很大(dà)的影響。
其管理策略是:當客戶請求數據庫連接時,首先查看連接池中(zhōng)是否有空閑連接,如果存在空閑連接,則将連接分(fēn)配給客戶使用;如果沒有空閑連接,則查看當前所開(kāi)的連接數是否已經達到最大(dà)連接數,如果沒達到就重新創建一(yī)個連接給請求的客戶;如果達到就按設定的最大(dà)等待時間進行等待,如果超出最大(dà)等待時間,則抛出異常給客戶。
當客戶釋放(fàng)數據庫連接時,先判斷該連接的引用次數是否超過了規定值,如果超過就從連接池中(zhōng)删除該連接,否則保留爲其他客戶服務。
該策略保證了數據庫連接的有效複用,避免頻(pín)繁的建立、釋放(fàng)連接所帶來的系統資(zī)源開(kāi)銷。
3、連接池的關閉。當應用程序退出時,關閉連接池中(zhōng)所有的連接,釋放(fàng)連接池相關的資(zī)源,該過程正好與創建相反。
數據庫連接池的作用以及配置;
連接池是創建和管理多個連接的一(yī)種技術,這些連接可被需要使用它們的任何線程使用。連接池技術基于下(xià)述事實:對于大(dà)多數應用程序,當它們正在處理通常需要數毫秒完成的事務時,僅需要能夠訪問JDBC連接的1個線程。未處理事務時,連接處于閑置狀态。使用連接池,允許其他線程使用閑置連接來執行有用的任務。
事實上,當某一(yī)線程需要用JDBC在MySQL或其他數據庫上執行操作時,需要用到由連接池提供的連接。使用連接完成線程後,線程會将連接返回給連接池,以便該連接能夠被其他需要使用連接的線程使用。從連接池“借出”連接時,該連接僅供請求它的線程使用。從編程觀點看,其效果等同于每次需要JDBC連接時調用DriverManager.getConnection(),但是,采用連接池技術,可通過使用新的或已有的連接結束線程。連接池技術能顯著增加Java應用程序的性能,同時還能降低資(zī)源使用率。
連接池技術的主要優點包括:
(1) 縮短了連接創建時間
創建新的JDBC連接會導緻聯網操作和一(yī)定的JDBC驅動開(kāi)銷,如果這類連接是“循環”使用的,使用該方式,可避免這類不利因素。
(2)簡化的編程模型
使用連接池技術時,每個單獨線程能夠像創建了自己的JDBC連接那樣進行操作,從而允許使用直接的JDBC編程技術。
(3)受控的資(zī)源使用
如果不使用連接池技術,而是在每次需要時爲線程創建新的連接,那麽應用程序的資(zī)源使用将十分(fēn)浪費(fèi),而且在負載較重的情況下(xià)會導緻無法預期的結果。
注意,與數據庫的每個連接均會在客戶端和服務器端造成一(yī)定的開(kāi)銷(CPU、關聯轉換等)。
每個連接均會對應用程序和數據庫服務器的可用資(zī)源帶來一(yī)定的限制。無論連接是否執行任何有用的任務,仍将使用這些資(zī)源中(zhōng)的相當一(yī)部分(fēn)。
連接池能夠使性能最大(dà)化,同時還能将資(zī)源利用控制在一(yī)定的水平之下(xià),如果超過該水平,應用程序将崩潰而不僅僅是變慢(màn)。幸運的是,Sun公司通過JDBC-2.0“可選”接口,完成了JDBC中(zhōng)連接池概念的标準化實施,所有主要應用服務器均實施了能夠與MySQL Connector/J一(yī)起良好工(gōng)作的
這類API。
通常,你可以在應用服務器的配置文件中(zhōng)配置連接池,并通過Java命名和目錄接口(JNDI)訪問它。
使用連接池時需要牢記的最重要事項是,無論在代碼中(zhōng)出現了什麽(異常、控制流等),連接以及由連接創建的任何部分(fēn)(語句、結果集等)均應被關閉,以便能再次使用它們。如不然,它們将糾纏在一(yī)起,在最好的情況下(xià),意味着它們所代表的數據庫服務器資(zī)源(緩沖區、鎖定、套接字等)可能會捆綁一(yī)段時間,在最壞的情況下(xià),可能會導緻永久捆綁。
連接池的最佳大(dà)小(xiǎo)是什麽?
取決于具體(tǐ)情況。盡管最佳大(dà)小(xiǎo)取決與預期的負載和平均的數據庫事務時間,最佳的連接池大(dà)小(xiǎo)小(xiǎo)于你的預期。
例如,如果使用的是Sun公司的Java Petstore Blueprint應用程序,對于包含15~20個連接的連接池,使用MySQL和Tomcat,在可接受的相應時間下(xià),可服務于中(zhōng)等程度的負載(600個并發用戶)。
要想确定用于應用程序的連接池大(dà)小(xiǎo),應使用諸如Apache Jmeter或The Grinder等工(gōng)具創建負載測試腳本,并對應用程序進行負載測試。确定出
發點的一(yī)種簡單方法是,将連接池的最大(dà)連接數配置爲“無限”,運行負載測試,并測量最大(dà)的并發連接數。随後,應進行反向操作,确定出使應
用程序具有最佳性能的連接池的最小(xiǎo)和最大(dà)值。
連接池與數據源區别?
數據庫連接池是在應用程序啓動時建立足夠的數據庫連接,并将這些連接組
成一(yī)個連接池,由應用程序動态地對池中(zhōng)的連接進行申請、使用和釋放(fàng)。
對于多于連接池中(zhōng)連接數的并發請求,應在請求隊列中(zhōng)排隊等待。并且應用程序可根據池中(zhōng)連接的使用率,動态增加或減少池中(zhōng)的連接數。當關閉連接操作時,連接并不真正的關閉,而是返回到連接池中(zhōng)作爲空閑連接在後面繼續使用,連接池技術解決了數據庫連接頻(pín)繁打開(kāi)關閉所帶來的性能問題。
有了連接池,我(wǒ)們沒必要直接找數據源打交道了,連接池在你的程序所在的機器内存,數據源不一(yī)定,并且數據源和連接池會保持一(yī)定數量
的連接,這樣我(wǒ)們訪問數據庫的時候就不需要找數據源要連接,直接在本地内存中(zhōng)取得連接,可以提高程序的性能。連結池的存在是爲了效率,因爲實例化一(yī)個連接很耗費(fèi)資(zī)源,而連接又(yòu)有可重用的特征,所以可以把一(yī)定數量的連接放(fàng)在連接池裏面以提高效率。
責任編輯:中(zhōng)山網站建設
【網訊網絡】國家高新技術企業》十年專注軟件開(kāi)發,網站建設,網頁設計,APP開(kāi)發,小(xiǎo)程序,微信公衆号開(kāi)發,定制各類企業管理軟件(OA、CRM、ERP、訂單管理系統、進銷存管理軟件等)!服務熱線:0760-88610046、13924923903,http://www.wansion.net
上一(yī)篇:java實現多級菜單的方法
下(xià)一(yī)篇:設計網站技巧五點建議
*請認真填寫需求,我(wǒ)們會在24小(xiǎo)時内與您取得聯系。