圖表制作FineReport 連接池原理
連接池主要由三部分組成:連接池的建立、連接池中連接使用的治理、連接池的關(guān)閉。下面就著重討論這三部分及連接池的配置問題。
1. 連接池原理
連接池技術(shù)的核心思想,是連接復(fù)用,通過建立一個(gè)數(shù)據(jù)庫連接池以及一套連接使用、分配、治理策略,使得該連接池中的連接可以得到高效、安全的復(fù)用,避免了數(shù)據(jù)庫連接頻繁建立、關(guān)閉的開銷。
另外,由于對(duì)JDBC中的原始連接進(jìn)行了封裝,從而方便了數(shù)據(jù)庫應(yīng)用對(duì)于連接的使用(特別是對(duì)于事務(wù)處理),提高了開發(fā)效率,也正是因?yàn)檫@個(gè)封裝層的存在,隔離了應(yīng)用的本身的處理邏輯和具體數(shù)據(jù)庫訪問邏輯,使應(yīng)用本身的復(fù)用成為可能。
1.1 連接池的建立
應(yīng)用程序中建立的連接池其實(shí)是一個(gè)靜態(tài)的。所謂靜態(tài)連接池是指連接池中的連接在系統(tǒng)初始化時(shí)就已分配好,且不能隨意關(guān)閉連接。Java中提供了很多容器類可以方便的構(gòu)建連接池,如:Vector、Stack、Servlet、Bean等,通過讀取連接屬性文件Connections.properties與數(shù)據(jù)庫實(shí)例建立連接。在系統(tǒng)初始化時(shí),根據(jù)相應(yīng)的配置創(chuàng)建連接并放置在連接池中,以便需要使用時(shí)能從連接池中獲取,這樣就可以避免連接隨意的建立、關(guān)閉造成的開銷。
1.2 連接池的治理
連接池治理策略是連接池機(jī)制的核心。當(dāng)連接池建立后,如何對(duì)連接池中的連接進(jìn)行治理,解決好連接池內(nèi)連接的分配和釋放,對(duì)系統(tǒng)的性能有很大的影響。連接的合理分配、釋放可提高連接的復(fù)用,降低了系統(tǒng)建立新連接的開銷,同時(shí)也加速了用戶的訪問速度。下面介紹連接池中連接的分配、釋放策略。
連接池的分配、釋放策略對(duì)于有效復(fù)用連接非常重要,我們采用的方法是一個(gè)很有名的設(shè)計(jì)模式:Reference Counting(引用記數(shù))。該模式在復(fù)用資源方面應(yīng)用的非常廣泛,把該方法運(yùn)用到對(duì)于連接的分配釋放上,為每一個(gè)數(shù)據(jù)庫連接,保留一個(gè)引用記數(shù),用來記錄該連接的使用者的個(gè)數(shù)。
1.3 連接池的關(guān)閉
當(dāng)應(yīng)用程序退出時(shí),應(yīng)關(guān)閉連接池,此時(shí)應(yīng)把在連接池建立時(shí)向數(shù)據(jù)庫申請(qǐng)的連接對(duì)象統(tǒng)一歸還給數(shù)據(jù)庫(即關(guān)閉所有數(shù)據(jù)庫連接),這與連接池的建立正好是一個(gè)相反過程。
連接池分配一個(gè)連接后如定義一個(gè)數(shù)據(jù)集,點(diǎn)擊預(yù)覽,執(zhí)行完對(duì)應(yīng)的sql語句會(huì)將所占用的連接歸還連接池。
2. 連接池的配置
數(shù)據(jù)庫連接池中到底要放置多少個(gè)連接,才能使系統(tǒng)的性能更佳,用minConn和maxConn來限制。
minConn是當(dāng)應(yīng)用啟動(dòng)的時(shí)候連接池所創(chuàng)建的連接數(shù),假如過大啟動(dòng)將變慢,但是啟動(dòng)后響應(yīng)更快;假如過小啟動(dòng)加快,但是最初使用的用戶將因?yàn)檫B接池中沒有足夠的連接不可避免的延緩了執(zhí)行速度。因此應(yīng)該在開發(fā)的過程中設(shè)定較小minConn,而在實(shí)際應(yīng)用的中設(shè)定較大minConn。maxConn是連接池中的最大連接數(shù),可以通過反復(fù)試驗(yàn)來確定此飽和點(diǎn)。
為此在連接池類ConnectionPool中加入兩個(gè)方法getActiveSize()和getOpenSize(),ActiveSize 表示某一時(shí)間有多少連接正被使用,OpenSize表示連接池中有多少連接被打開,反映了連接池使用的峰值。將這兩個(gè)值在日志信息中反應(yīng)出來, minConn的值應(yīng)該小于平均ActiveSize,而maxConn的值應(yīng)該在activeSize和OpenSize之間。
了解Java報(bào)表工具就從這里開始
posted on 2015-05-18 10:40 season 閱讀(173) 評(píng)論(0) 編輯 收藏 所屬分類: Java報(bào)表—技術(shù)知識(shí) 、Java報(bào)表—使用心得