麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

基于JDBC的數據庫連接池技術研究與設計

2019-11-18 13:36:25
字體:
來源:轉載
供稿:網友
本文介紹了基于JDBC的數據庫連接池的工作原理,闡述了連接池技術的事務處理、多數據庫服務器等各項要害技術,提出了一個高效的連接池治理策略,最后具體說明了數據庫連接池應用的具體實現過程。

  要害詞 JDBC; 數據庫; 連接池; 事務處理

  隨著信息技術的高速發展與廣泛應用,數據庫技術在信息技術領域中的位置越來越重要,尤其是網絡應用和電子商務的迅速發展,都需要數據庫技術支持動態Web站點的運行,而傳統的開發模式是:首先在主程序(如Servlet、Beans)中建立數據庫連接;然后進行SQL操作,對數據庫中的對象進行查詢、修改和刪除等操作;最后斷開數據庫連接。使用這種開發模式,對于一個簡單的數據庫應用,由于數據庫的訪問不是很頻繁,只需要在訪問數據庫時創建一個連接,用完后就關閉它,這樣做不會明顯的增大系統的開銷。但是對于一個復雜的數據庫應用,情況就完全不同:頻繁的建立、關閉數據庫,會極大的降低系統的性能,增大系統的開銷,甚至成為系統的瓶頸。另外使用這種傳統的模式,還必須治理數據庫的每一個連接,以確保他們能正確關閉,假如出現程序異常而導致某些連接未能關閉,將引起數據庫系統中的內存泄露,最終不得不重啟數據庫。因此采用運行速度更快、數據庫訪問效率更高的數據庫技術,以提高系統的運行效率將是至關重要的。

  為了解決這一問題,在JDBC2.0中提出了JDBC連接池技術,通過在客戶之間共享一組連接,而不是在它們需要的時候再為它們生成,這樣就可以改善資源使用,提高應用程序的響應能力。

  JDBC 概述

  JDBC(java Database Connectivity,Java數據庫連接)是一種用于執行SQL語句的JavaAPI,可以為多種關系型數據庫(如Oracle、Sybase、SQL Server、access等)提供統一訪問接口,它由一組Java語言編寫的類和接口組成,使數據庫開發人員能夠用標準JavaAPI編寫數據庫應用程序。

  連接池技術

  1、連接池原理

  連接池技術的核心思想是:連接復用,通過建立一個數據庫連接池以及一套連接使用、分配、治理策略,使得該連接池中的連接可以得到高效、安全的復用,避免了數據庫連接頻繁建立、關閉的開銷。另外,由于對JDBC中的原始連接進行了封裝,從而方便了數據庫應用對于連接的使用(非凡是對于事務處理),提高了開發效率,也正是因為這個封裝層的存在,隔離了應用的本身的處理邏輯和具體數據庫訪問邏輯,使應用本身的復用成為可能。連接池主要由三部分組成(如圖1所示):連接池的建立、連接池中連接的使用治理、連接池的關閉。下面就著重討論這三部分及連接池的配置問題。


基于JDBC的數據庫連接池技術研究與設計
圖1 連接池模式

  1.1 連接池的建立

  應用程序中建立的連接池其實是一個靜態的。所謂靜態連接池是指連接池中的連接在系統初始化時就已分配好,且不能隨意關閉連接。Java中提供了很多容器類可以方便的構建連接池,如:Vector、Stack、Servlet、Bean等,通過讀取連接屬性文件Connections.PRoperties與數據庫實例建立連接。在系統初始化時,根據相應的配置創建連接并放置在連接池中,以便需要使用時能從連接池中獲取,這樣就可以避免連接隨意的建立、關閉造成的開銷。

  1.2 連接池的治理

  連接池治理策略是連接池機制的核心。當連接池建立后,如何對連接池中的連接進行治理,解決好連接池內連接的分配和釋放,對系統的性能有很大的影響。連接的合理分配、釋放可提高連接的復用,降低了系統建立新連接的開銷,同時也加速了用戶的訪問速度。下面介紹連接池中連接的分配、釋放策略。

  連接池的分配、釋放策略對于有效復用連接非常重要,我們采用的方法是一個很有名的設計模式:Reference Counting(引用記數)。該模式在復用資源方面應用的非常廣泛,把該方法運用到對于連接的分配釋放上,為每一個數據庫連接,保留一個引用記數,用來記錄該連接的使用者的個數。具體的實現方法是:

  當客戶請求數據庫連接時,首先查看連接池中是否有空閑連接(指當前沒有分配出去的連接)。假如存在空閑連接,則把連接分配給客戶并作相應處理(即標記該連接為正在使用,引用計數加1)。假如沒有空閑連接,則查看當前所開的連接數是不是已經達到maxConn(最大連接數),假如沒達到就重新創建一個連接給請求的客戶;假如達到就按設定的maxWaitTime(最大等待時間)進行等待,假如等待maxWaitTime后仍沒有空閑連接,就拋出無空閑連接的異常給用戶。

  當客戶釋放數據庫連接時,先判定該連接的引用次數是否超過了規定值,假如超過就刪除該連接,并判定當前連接池內總的連接數是否小于minConn(最小連接數),若小于就將連接池布滿;假如沒超過就將該連接標記為開放狀態,可供再次復用。可以看出正是這套策略保證了數據庫連接的有效復用,避免頻繁地建立、釋放連接所帶來的系統資源開銷。

  1.3 連接池的關閉

  當應用程序退出時,應關閉連接池,此時應把在連接池建立時向數據庫申請的連接對象統一歸還給數據庫(即關閉所有數據庫連接),這與連接池的建立正好是一個相反過程。

  1.4 連接池的配置

  數據庫連接池中到底要放置多少個連接,才能使系統的性能更佳,用minConn和maxConn來限制。minConn是當應用啟動的時候連接池所創建的連接數,假如過大啟動將變慢,但是啟動后響應更快;假如過小啟動加快,但是最初使用的用戶將因為連接池中沒有足夠的連接不可避免的延緩了執行速度。因此應該在開發的過程中設定較小minConn,而在實際應用的中設定較大minConn。maxConn是連接池中的最大連接數,可以通過反復試驗來確定此飽和點。為此在連接池類ConnectionPool中加入兩個方法getActiveSize()和getOpenSize(),ActiveSize 表示某一時間有多少連接正被使用,OpenSize表示連接池中有多少連接被打開,反映了連接池使用的峰值。將這兩個值在日志信息中反應出來, minConn的值應該小于平均ActiveSize,而maxConn的值應該在activeSize和OpenSize之間。

  2、連接池的要害技術

  2.1 事務處理

  前面討論的是關于使用數據庫連接進行普通的數據庫訪問。對于事務處理,情況就變得比較復雜。因為事務本身要求原則性的保證,此時就要求對于數據庫的操作符合"All-All-Nothing"原則,即要么全部完成,要么什么都不做。假如簡單的采用上述的連接復用的策略,就會發生問題,因為沒有辦法控制屬于同一個事務的多個數據庫操作方法的動作,可能這些數據庫操作是在多個連接上進行的,并且這些連接可能被其他非事務方法復用。Connection本身具有提供了對于事務的支持,可以通過設置Connection的AutoCommit屬性為false,顯式的調用 commit或rollback方法來實現。但是要安全、高效的進行連接復用,就必須提供相應的事務支持機制。方法是:采用顯式的事務支撐方法,每一個事務獨占一個連接。這種方法可以大大降低對于事務處理的復雜性,并且又不會妨礙連接的復用。

  連接治理服務提供了顯式的事務開始、結束(commit或rollback)聲明,以及一個事務注冊表,用于登記事務發起者和事務使用的連接的對應關系,通過該表,使用事務的部分和連接治理部分就隔離開,因為該表是在運行時根據實際的調用情況動態生成的。事務使用的連接在該事務運行中不能被復用。在實現中,用戶標識是通過使用者所在的線程來標識的。后面的所有對于數據庫的訪問都是通過查找該注冊表,使用已經分配的連接來完成的。當事務結束時,從注冊表中刪除相應表項。

  2.2 封裝

  從上面的論述可以看出,普通的數據庫方法和事務方法對于連接的使用(分配、釋放)是不同的,為了便于使用,對外提供一致的操作接口,我們對連接進行了封裝:普通連接和事務連接,并利用了Java中的強大的面向對象特性:多態。普通連接和事務連接均實現了一個DbConnection接口,對于接口中定義的方法,分別根據自己的特點作了不同的實現,這樣在對于連接的處理上就非常的一致了。

  2.3 并發

  為了使連接治理服務有更大的通用性,我們必須要考慮到多線程環境,即并發問題。在一個多線程的環境下,必須要保證連接治理自身數據的一致性和連接內部數據的一致性,在這方面Java提供很好的支持(synchronized要害字),這樣就很輕易使連接治理成為線程安全的。

  2.4 多數據庫服務器

  在實際應用中,應用程序經常需要訪問多個不同的數據庫。如何通過同一個連接池訪問不同的數據庫,是應用程序需要解決的一個核心問題。下面介紹一種解決的途徑:

  首先,定義一個數據庫連接池參數的類,定義了數據庫的JDBC驅動程序類名,連接的URL以及用戶名口令等等一些信息,該類是用于初始化連接池的參數:



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日韩视频一 | 国产精品一区二区三区在线看 | 一级α片免费看刺激高潮视频 | 国产精品午夜未成人免费观看 | 久久精品免费国产 | 久久精品久久精品久久精品 | 欧美一区二区黄 | 国产高潮好爽受不了了夜色 | 亚洲欧美一区二区三区在线观看 | 美女黄网站免费观看 | 精品免费久久 | 亚洲射情 | 一级做人爱c黑人影片 | 黄色免费小视频网站 | 欧美在线 | 亚洲 | 一级做a爱片性色毛片高清 国产精品色在线网站 | 久久免费观看一级毛片 | 爱唯侦察 国产合集 亚洲 | 日韩精品中文字幕在线观看 | 97香蕉超级碰碰久久免费软件 | 久久精品亚洲一区二区三区观看模式 | 九九热精品在线 | 成人免费精品视频 | 中文字幕在线播放不卡 | 九一成人| 毛片在线免费播放 | 一级毛片在线看 | 一级毛片真人免费播放视频 | 黄色av网站免费 | 亚洲男人天堂 | www.91sp| 性高湖久久久久久久久aaaaa | 亚洲一区中文字幕 | 欧洲成人精品 | 请播放一级毛片 | jizzyouxxxx | 久久久久免费精品国产小说色大师 | 亚洲资源在线 | 欧美性受xxxxxx黑人xyx性爽 | 欧美videofree性欧美另类 | av成人在线免费观看 |