數據庫訪問中間件的池式資源管理優化設計方法研究
管理縱橫
作者:孟秀錦 孫燦 臧金梅
【摘要】在pgpoo-II的實際應用中,經常會出現大量用戶並發的訪問後台數據庫的情況,這樣就會造成在某一時刻對係統資源的超負荷使用,使得係統的整體性能急劇下降,係統吞吐率降低。如果能夠運用池式資源設計原理來管理資源的生成、使用和釋放,該問題就能得到有效地解決。本文基於數據訪問中間件的池化資源技術進行研究,提出了基於曆史記錄反饋的池式資源管理優化設計方法。
【關鍵詞】池式資源 數據庫訪問中間件 基於曆史記錄反饋
一、引言
實際應用中,經常會出現大量用戶同時並發的訪問後台數據庫的情況,這樣就會造成在某一時刻對係統資源的超負荷使用,使得係統的整體性能急劇下降,係統吞吐率降低。如果能夠運用池式資源設計原理來管理資源的生成、使用和釋放,上述問題就能得到有效地解決。如在係統初始化時預先建立一定數量的數據庫連接,當有用戶提交數據庫連接請求時,直接從池中取出數據庫連接分配給用戶使用,這種方式避免了大量用戶同時提交數據庫連接請求時,因為大量創建數據庫連接而帶來的係統開銷。因此數據訪問中間件的池化資源技術占有極其重要的地位,如何以更高效的方式管理池式資源是本文研究的重點。
二、數據訪問中間件的池式資源設計
(一)池式資源設計原理
資源池最基本的思想就是預先建立一些資源對象存儲在內存中,最常使用的就是SOCKET連接、JDBC連接等等。例如一個簡單的例子:某個領域的數據查詢,用戶請求服務器建立一個SOCKET連接,然後提交查詢請求,最後將結果返回後關閉連接。如果大量用戶同時並發請求,那麼也會出現上麵所說的問題,SOCKET的連接管理也會成為影響係統性能的瓶頸。因此需要資源池來解決此問題,采用資源池中的共享資源管理機製可以為多個並發用戶提供服務,而且大大降低用戶請求資源服務帶來的係統資源開銷。
(二)pgpool-II連接池處理流程
初始時,pgpool-II的數據庫連接池中並不是可用連接而是一些空的連接池結構體,等到用戶提交請求後,才逐個建立到數據庫的連接。雖然連接池技術包括數據庫連接的建立、釋放和調度,由於本文是在原有的數據訪問中間件pgpool-II上做的研究和改進,原係統已有對連接的釋放和調度的處理,而且對本文所提出的連接建立策略沒有影響,因此本文關注的重點是數據庫連接的建立,接下來隻對原有的數據庫連接策略進行了分析,得到原數據訪問中間件的具體執行流程。
針對原有數據訪問中間件中數據庫連接池模型的缺點,進行了如下改進:在係統啟動時,就先建立一定數量的數據庫連接,當用戶有連接請求時,判斷是否有可用的數據庫連接,如果有則直接從連接池中取出,使用完後再將連接放入到連接池中,如果沒有可用連接,在數據庫連接池的容量還沒有達到限定值時,建立到數據庫的連接,否則根據一定策略替換掉一個數據庫連接,然後再建立新的數據庫連接。
三、基於曆史記錄反饋的池式資源管理設計實現
本文采用三個數組結構分別記錄池的容量和數據庫連接使用次數在曆史特定時刻的值。
因為在記錄池的容量時需要記錄池式資源容量的最大值的和最小值,因此每個數組元素是自定義的結構,而對於記錄數據庫連接時,隻需要記錄每個連接的使用次數,因此隻需要為每個連接定義一個整形變量即可。
四、小結
本章主要對數據訪問中間件的關鍵技術——池式資源管理進行了研究,池式資源管理包括進程池和數據庫連接池以及內存的管理,通過使用進程池和數據庫連接池技術,避免了多用戶並發時頻繁和反複的創建進程和數據庫連接,減少了用戶的響應時間,提高了中間件的響應速度。在對原有中間件的池式資源管理研究的基礎上,提出了基於曆史記錄反饋的池式資源管理的改進方法。
參考文獻:
[1]李勇, 楊蕾.多數據庫係統中間件的設計與實現方法[J].雲南工業大學學報. 1999, (4).
[2]李歡, 李彤.中間件的概念、分類與發展[A].2008年中國信息技術與應用論壇論文集(一)[C]. 2008.
[3]黃海.數據訪問中間件池化資源和緩存的研究應用[D].海河大學碩士學位論文,2006.