摘要:通過深入探究傳統開發(fā)數據庫舊模式過程中存在的問題,有針對性的實施合理的數據庫連接池技術,并詳細設計其具體模型以及規(guī)劃方案。建立于連接池靜態(tài)設計的前提下,進一步優(yōu)化連接池的動態(tài)模型,參照其模型構造的部件類以及內在屬性、方法的不同,真正落實靈活配置連接池的最終目的,使數據庫獲取最大限度的訪問效率。
關鍵詞:JAVA;數據庫;數據庫連接池;連接池設計
當前,緊跟高速發(fā)展的計算機技術與信息技術趨勢,帶動了依托網絡為后盾的電子商務、MIS 等交互信息系統的大力應用。一定的網絡數據庫技術是其自身運行高效的重要保證,綜合考慮開發(fā)系統最小投資成本以及管理數據庫連接資源功效的提高情況,基于JDBC2. 0的基礎上,實施了合理有效的JDBC 數據庫連接池(ConnectionPool) 技術。與操作系統運用線程池技術原理具有一定的相似之處的連接池,通過同組連接對象的再次運用,每組已打開的連接由全體用戶同享,連接數據庫的建立與釋放時間可大大縮短,使訪問系統的性能及其自身的可測量性得以大幅提高。
一、構建數據庫連接池的模型
連接數據庫為其而構建的連接池,創(chuàng)建了相應的“資源緩沖池”。換句話而言,在資源緩沖池內提前設定一定量的數據連接,依據連接數據庫的具體需求,構建時,適時在“資源緩沖池”內取出相對恰當的一個即可,完成使用之后,再放回原處。而針對構建與釋放連接管理,均由數據庫連接池自身來實現,構建連接池的具體模型,如圖1所示。
通過最大連接數的連接池合理設定,與數據庫的無節(jié)制地連接的應用程度可得到有效預防。其中尤為關鍵的是連接池管理體制的預先設定,目前連接量以及其運用情況的監(jiān)控,一定程度上提供了開發(fā)、評測以及調整系統性能的參考依據。
二、設計連接池規(guī)劃方案
設計數據庫連接池,主要涉及兩大方面:構建連接池以及分配與釋放連接池的管理。
1.構建數據庫連接池
初始化數據庫系統時,通過對XML 配置文件內的數據參數以及相應取值的合理讀取,在系統內存中應用程序構建一個相對靜態(tài)的連接池。所謂的靜態(tài),也即相對于應用程序而言,具有唯一的數據庫連接池,并明確其連接池的具體參數配置。當真正初始化連接池對象之后,一定量的連接已在池內完成構建,并不能隨意將其關閉,之后均從連接池內獲得線程所需的連接,進而有效的規(guī)避內存開銷因構建及關閉連接的隨意性而錯誤產生。而有關數據庫連接池的具體參數有:
圖1 連接池的基本模型
1) maxidle:數據庫連接池內最大空閑連接數,也即動態(tài)維持連接池內的相對最小連接數。
2) maxactive:允許在連接池中構建的最大連接數。
3) active:連接數已合理分配出來。
4) maxuse:使用數據連接的最大次數。
5) maxwait:連接處于無空閑時線程所停留等候的最大時間。一定情況下,maxidle 和active 的和等于maxactive。
2.分配并釋放數據連接
當完成構建數據庫連接池之后,管理體制的數據庫連接池合理設定具有一定的關鍵作用。運用有效的“Reference Counting”的設計模式,相應的引用計數可設置直接影響著對應的每個數據庫連接,通過使用連接次數的合理記錄,再次復用或被釋放將由其直接決定。管理體制的連接池構建如圖2 所示。
針對連接數據庫被線程請求時,連接池內的隊列空閑情況是其首要查看的重要環(huán)節(jié),而隊列的空閑主要用來未分配連接的存放。若空閑連接存在,線程將獲取分配,并在已分配的隊列內進行及時注冊,引用計數相應的加1。若空的空閑隊列,則需對剛構建的連接數進行合理查看是否符合maxactive的要求,若未符合需對所請求的線程及時構建一個新連接;若已符合maxactive,其釋放連接需等候,當對比maxwait遠遠大于其等候時間后,未進行釋放的連接,就需及時返回失敗請求的程序。
圖2 連接池的管理機制
針對數據庫連接有相應的線程釋放時,需對引用計數的連接進行提前查看是否符合maxuse的要求,若已超出,需將其刪除,并及時對連接池內的空閑隊列進行同步檢查,若對比maxidle小于的空閑隊列內的連接數,就需在空閑隊列內構建新數據連接,進而對適量的備用連接做好有效保障;若對比maxuse小于的引用計數,則需歸還連接給空閑隊列,以備再次復用。
三、合理優(yōu)化數據庫連接池
1.連接池的動態(tài)模型
相對于局限性的靜態(tài)連接池,合理設計了優(yōu)化連接池的動態(tài)模型,通過連接池加載、修改以及刪除的動態(tài)方式,可針對數據庫類型的不同,同步構建連接池對象,真正落實連接池參數的靈活配置目的,進而盡可能的優(yōu)化數據庫的系統性能。
與此同時,主要由4大部件構成的動態(tài)連接池,具體包含有:管理連接池部件(DBCon2nectionManager) 、分配連接池部件(DBConnectionDist rib2ute) 、連接池部件(ConnectionPool) 、連接部件(Conn),每個類可由相應的各個部件來具體定義,在運作的程序內相應的對象可動態(tài)地構建。與連接池靜態(tài)有一定相似之處的連接池部件以及連接部件,而立足數據庫連接池構建的實際,有針對性的詳細探究管理連接池類與分配連接池類。
2. 管理連接池類
適合于單例模式的管理連接池類,也即數據庫系統內只含唯一的管理連接池類實例。完成構建此實例之后,持續(xù)運作,以便于管理多個連接池對象,其所暗含的功能主要有:構建實例時,需對數據庫的DBC 驅動程序在相應的配置文件內進行裝載并注冊;按照配置文件所設定的材料信息進行連接池對象的構建,并對每個連接池對象起個相應的名稱;對已設定的連接提供相應的獲取和釋放池連接接口;新數據連接池予以提供并注冊,對已設定的連接池接口進行修改或刪除;運作日志需設置合理。
方便使用與管理多個連接池,是其管理連接池類引入的主要目的,比如需設定不同類型數據庫在系統內的情況等。針對相應的分配連接池對象已在應用程序內完成創(chuàng)建的情況,構建的此對象便獲取了對應的管理連接池類實例。通過構建此實例,在內存中,可對記錄在配置文件內的所有數據庫相應的連接池對象進行加載,同時,針對運作中的程序,可對連接池的參數進行動態(tài)修改,依據應用程序要求的不同,使系統合理有效的配置連接池內的最大連接空閑數及最大連接數等。
結束語:
總的來講,基于JAVA的數據庫系統開發(fā)的前提下,運用有效的連接池技術,設計合理的數據庫連接池,可使構建與關閉數據庫連接次數得以最大限度的減少。對此,基于連接池靜態(tài)的前提下,本文深入探究了數據庫連接池的具體模型及方案規(guī)劃,通過分配連接池類與管理類的設計來構建動態(tài)連接池,并設定了對應的優(yōu)化動態(tài)連接池模型。而應用連接池技術的數據庫優(yōu)化模型,系統投資成本得以大幅降低的同時,訪問數據庫的效率相應的得到提高。
參考文獻:
[1]沈應奎.曾凌.Java Web數據庫系統應用開發(fā)與實例.人民郵電出版社.2008(2).
[2]雍俊海.程序設計教程.清華大學出版社.2007(8).
[3]賈蓉生.胡大源.林金池.Java 典型應用徹查1000例-網站數據庫設計.科學出版社.2009(7).