網(wǎng)站數(shù)據(jù)庫連接池作用及配置;
連接池用于創(chuàng)建和管理數(shù)據(jù)庫連接的緩沖池技術(shù),緩沖池中的連接可以被任何需要他們的線程使用。當(dāng)一個線程需要用JDBC對一個數(shù)據(jù)庫操作時,將從池中請求一個連接。當(dāng)這個連接使用完畢后,將返回到連接池中,等待為其他的線程服務(wù)。
連接池的主要優(yōu)點有以下三個方面。
1、減少連接創(chuàng)建時間。連接池中的連接是已準備好的、可重復(fù)使用的,獲取后可以直接訪問數(shù)據(jù)庫,因此減少了連接創(chuàng)建的次數(shù)和時間。
2、簡化的編程模式。當(dāng)使用連接池時,每一個單獨的線程能夠像創(chuàng)建一個自己的JDBC連接一樣操作,允許用戶直接使用JDBC編程技術(shù)。
3、控制資源的使用。如果不使用連接池,每次訪問數(shù)據(jù)庫都需要創(chuàng)建一個連接,這樣系統(tǒng)的穩(wěn)定性受系統(tǒng)連接需求影響很大,很容易產(chǎn)生資源浪費和高負載異常。連接池能夠使性能大化,將資源利用控制在一定的水平之下。連接池能控制池中的連接數(shù)量,增強了系統(tǒng)在大量用戶應(yīng)用時的穩(wěn)定性。
下面,簡單的闡述下連接池的工作原理。
連接池技術(shù)的核心思想是連接復(fù)用,通過建立一個數(shù)據(jù)庫連接池以及一套連接使用、分配和管理策略,使得該連接池中的連接可以得到高效、安全的復(fù)用,避免了數(shù)據(jù)庫連接頻繁建立、關(guān)閉的開銷。
連接池的工作原理主要由三部分組成,分別為連接池的建立、連接池中連接的使用管理、連接池的關(guān)閉。
1、連接池的建立。一般在系統(tǒng)初始化時,連接池會根據(jù)系統(tǒng)配置建立,并在池中創(chuàng)建了幾個連接對象,以便使用時能從連接池中獲取。連接池中的連接不能隨意創(chuàng)建和關(guān)閉,這樣避免了連接隨意建立和關(guān)閉造成的系統(tǒng)開銷。Java中提供了很多容器類可以方便的構(gòu)建連接池,例如Vector、Stack等。
2、連接池的管理。連接池管理策略是連接池機制的核心,連接池內(nèi)連接的分配和釋放對系統(tǒng)的性能有很大的影響。
其管理策略是:當(dāng)客戶請求數(shù)據(jù)庫連接時,首先查看連接池中是否有空閑連接,如果存在空閑連接,則將連接分配給客戶使用;如果沒有空閑連接,則查看當(dāng)前所開的連接數(shù)是否已經(jīng)達到大連接數(shù),如果沒達到就重新創(chuàng)建一個連接給請求的客戶;如果達到就按設(shè)定的大等待時間進行等待,如果超出大等待時間,則拋出異常給客戶。
當(dāng)客戶釋放數(shù)據(jù)庫連接時,先判斷該連接的引用次數(shù)是否超過了規(guī)定值,如果超過就從連接池中刪除該連接,否則保留為其他客戶服務(wù)。
該策略保證了數(shù)據(jù)庫連接的有效復(fù)用,避免頻繁的建立、釋放連接所帶來的系統(tǒng)資源開銷。
3、連接池的關(guān)閉。當(dāng)應(yīng)用程序退出時,關(guān)閉連接池中所有的連接,釋放連接池相關(guān)的資源,該過程正好與創(chuàng)建相反。
數(shù)據(jù)庫連接池的作用以及配置;
連接池是創(chuàng)建和管理多個連接的一種技術(shù),這些連接可被需要使用它們的任何線程使用。連接池技術(shù)基于下述事實:對于大多數(shù)應(yīng)用程序,當(dāng)它們正在處理通常需要數(shù)毫秒完成的事務(wù)時,僅需要能夠訪問JDBC連接的1個線程。未處理事務(wù)時,連接處于閑置狀態(tài)。使用連接池,允許其他線程使用閑置連接來執(zhí)行有用的任務(wù)。
事實上,當(dāng)某一線程需要用JDBC在MySQL或其他數(shù)據(jù)庫上執(zhí)行操作時,需要用到由連接池提供的連接。使用連接完成線程后,線程會將連接返回給連接池,以便該連接能夠被其他需要使用連接的線程使用。從連接池“借出”連接時,該連接僅供請求它的線程使用。從編程觀點看,其效果等同于每次需要JDBC連接時調(diào)用DriverManager.getConnection(),但是,采用連接池技術(shù),可通過使用新的或已有的連接結(jié)束線程。連接池技術(shù)能顯著增加Java應(yīng)用程序的性能,同時還能降低資源使用率。
連接池技術(shù)的主要優(yōu)點包括:
(1) 縮短了連接創(chuàng)建時間
創(chuàng)建新的JDBC連接會導(dǎo)致聯(lián)網(wǎng)操作和一定的JDBC驅(qū)動開銷,如果這類連接是“循環(huán)”使用的,使用該方式,可避免這類不利因素。
(2)簡化的編程模型
使用連接池技術(shù)時,每個單獨線程能夠像創(chuàng)建了自己的JDBC連接那樣進行操作,從而允許使用直接的JDBC編程技術(shù)。
(3)受控的資源使用
如果不使用連接池技術(shù),而是在每次需要時為線程創(chuàng)建新的連接,那么應(yīng)用程序的資源使用將十分浪費,而且在負載較重的情況下會導(dǎo)致無法預(yù)期的結(jié)果。
注意,與數(shù)據(jù)庫的每個連接均會在客戶端和服務(wù)器端造成一定的開銷(CPU、關(guān)聯(lián)轉(zhuǎn)換等)。
每個連接均會對應(yīng)用程序和數(shù)據(jù)庫服務(wù)器的可用資源帶來一定的限制。無論連接是否執(zhí)行任何有用的任務(wù),仍將使用這些資源中的相當(dāng)一部分。
連接池能夠使性能大化,同時還能將資源利用控制在一定的水平之下,如果超過該水平,應(yīng)用程序?qū)⒈罎⒍粌H僅是變慢。幸運的是,Sun公司通過JDBC-2.0“可選”接口,完成了JDBC中連接池概念的標準化實施,所有主要應(yīng)用服務(wù)器均實施了能夠與MySQL Connector/J一起良好工作的
這類API。
通常,你可以在應(yīng)用服務(wù)器的配置文件中配置連接池,并通過Java命名和目錄接口(JNDI)訪問它。
使用連接池時需要牢記的最重要事項是,無論在代碼中出現(xiàn)了什么(異常、控制流等),連接以及由連接創(chuàng)建的任何部分(語句、結(jié)果集等)均應(yīng)被關(guān)閉,以便能再次使用它們。如不然,它們將糾纏在一起,在最好的情況下,意味著它們所代表的數(shù)據(jù)庫服務(wù)器資源(緩沖區(qū)、鎖定、套接字等)可能會捆綁一段時間,在最壞的情況下,可能會導(dǎo)致永久捆綁。
連接池的好大小是什么?
取決于具體情況。盡管好大小取決與預(yù)期的負載和平均的數(shù)據(jù)庫事務(wù)時間,好的連接池大小小于你的預(yù)期。
例如,如果使用的是Sun公司的Java Petstore Blueprint應(yīng)用程序,對于包含15~20個連接的連接池,使用MySQL和Tomcat,在可接受的相應(yīng)時間下,可服務(wù)于中等程度的負載(600個并發(fā)用戶)。
要想確定用于應(yīng)用程序的連接池大小,應(yīng)使用諸如Apache Jmeter或The Grinder等工具創(chuàng)建負載測試腳本,并對應(yīng)用程序進行負載測試。確定出
發(fā)點的一種簡單方法是,將連接池的大連接數(shù)配置為“無限”,運行負載測試,并測量大的并發(fā)連接數(shù)。隨后,應(yīng)進行反向操作,確定出使應(yīng)
用程序具有好性能的連接池的最小和大值。
連接池與數(shù)據(jù)源區(qū)別?
數(shù)據(jù)庫連接池是在應(yīng)用程序啟動時建立足夠的數(shù)據(jù)庫連接,并將這些連接組
成一個連接池,由應(yīng)用程序動態(tài)地對池中的連接進行申請、使用和釋放。
對于多于連接池中連接數(shù)的并發(fā)請求,應(yīng)在請求隊列中排隊等待。并且應(yīng)用程序可根據(jù)池中連接的使用率,動態(tài)增加或減少池中的連接數(shù)。當(dāng)關(guān)閉連接操作時,連接并不真正的關(guān)閉,而是返回到連接池中作為空閑連接在后面繼續(xù)使用,連接池技術(shù)解決了數(shù)據(jù)庫連接頻繁打開關(guān)閉所帶來的性能問題。
有了連接池,我們沒必要直接找數(shù)據(jù)源打交道了,連接池在你的程序所在的機器內(nèi)存,數(shù)據(jù)源不一定,并且數(shù)據(jù)源和連接池會保持一定數(shù)量
的連接,這樣我們訪問數(shù)據(jù)庫的時候就不需要找數(shù)據(jù)源要連接,直接在本地內(nèi)存中取得連接,可以提高程序的性能。連結(jié)池的存在是為了效率,因為實例化一個連接很耗費資源,而連接又有可重用的特征,所以可以把一定數(shù)量的連接放在連接池里面以提高效率。
分享標題:網(wǎng)站數(shù)據(jù)庫連接池作用及配置
分享網(wǎng)址:http://www.rwnh.cn/news/144139.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動態(tài)網(wǎng)站、微信公眾號、App設(shè)計、面包屑導(dǎo)航、手機網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)