提高 Oracle JDBC的性能的辦法
本文主要描述的是如何利用連接與語句池的特性來大幅度的提高 Oracle JDBC 程序的相關(guān)性能。我們一般使用的,諸如連接池與語句池等池技術(shù)就可以顯著提高數(shù)據(jù)庫密集型應(yīng)用程序的性能,因為這樣可以實現(xiàn)對象重用,而無需花費時間和資源重新創(chuàng)建對象。
如果應(yīng)用程序與數(shù)據(jù)庫頻繁交互并且經(jīng)常使用相同的參數(shù)重新建立連接,那么重用表示應(yīng)用程序使用的物理數(shù)據(jù)庫連接的數(shù)據(jù)庫連接對象可顯著提高性能。反之,如果應(yīng)用程序與其基礎(chǔ)數(shù)據(jù)庫很少連接,您不會因使用連接池獲益。實際上,如果池的設(shè)置(例如,允許的最大或最小連接數(shù)限制)針對特定應(yīng)用程序進行了優(yōu)化,許多數(shù)據(jù)庫密集型應(yīng)用程序都可以因使用連接池獲益。
與連接池一樣,語句池也是用于提高應(yīng)用程序性能的技術(shù)。通過在應(yīng)用程序運行期間多次執(zhí)行語句池,可以進一步提高性能。然而,我們應(yīng)該意識到語句池并不是解決性能問題的靈丹妙藥。如果對每條語句進行緩存而不辨別其在程序中執(zhí)行的次數(shù),則不可能獲得任何性能改進。
實際上,由于將語句放入緩存并保存在緩存中將產(chǎn)生開銷,因此對在程序執(zhí)行期間僅執(zhí)行一次的語句進行緩存將降低性能。
本文將向您介紹如何利用連接池和語句池提升通過 Oracle JDBC 瘦驅(qū)動程序與 Oracle 數(shù)據(jù)庫交互的數(shù)據(jù)密集型 Java 數(shù)據(jù)庫連接 (JDBC) 程序的性能。本文將特別介紹 Oracle Universal Connection Pool (UCP) for JDBC,它提供了適用于緩存 JDBC 連接的全功能連接池實現(xiàn)。
最后,本文將討論如何通過使用語句池獲益,需要利用特定于 Oracle 的 JDBC 驅(qū)動程序的特性以及新的 JDBC 4.0 方法,這些方法已添加到 Statement 接口并且在支持 Java 開發(fā)工具包 (JDK) 1.6 及更高版本的 Oracle JDBC 驅(qū)動程序中可用。
設(shè)置工作環(huán)境
要使用本文中的示例并訪問 Oracle 數(shù)據(jù)庫,您的開發(fā)計算機上需要安裝以下軟件組件(請參見“下載”portlet 以獲得鏈接):
JDK 1.6
支持 JDK 1.6 的 Oracle JDBC 瘦驅(qū)動程序
Oracle 通用連接池庫
Oracle JDBC 瘦驅(qū)動程序是一個 Type IV JDBC 驅(qū)動程序,這意味著它獨立于平臺,并且在與 Oracle 數(shù)據(jù)庫交互的客戶端上不需要任何額外的 Oracle 軟件。因此,您可以從 JDBC 驅(qū)動程序下載頁面下載包含相應(yīng)瘦驅(qū)動程序版本類別的 JAR 文件,然后將該驅(qū)動程序安裝在您的計算機上,無需安裝/升級任何其他的 Oracle 軟件。要安裝該驅(qū)動程序,您只需將其 JAR 文件復(fù)制到本地文件系統(tǒng),然后將這些 JAR 的路徑包括在 CLASSPATH 環(huán)境變量中。例如,您可能包括以下路徑:
- ORACLE_HOME/jdbc/lib/ojdbc6.jar ORACLE_HOME/jlib/orai18n.jar
如果您的計算機上已經(jīng)安裝了 Oracle 數(shù)據(jù)庫,則瘦驅(qū)動程序也已經(jīng)隨 Oracle 數(shù)據(jù)庫安裝到您的計算機上。但是,由于瘦驅(qū)動程序獨立于任何其他 Oracle 軟件,因此您可以通過使用相應(yīng)的 JAR 文件(可以在 JDBC 驅(qū)動程序下載頁面找到)輕松升級到該驅(qū)動程序的最新版本。
UCP 是從 11.1.0.7 版開始引入 Oracle 數(shù)據(jù)庫 11g 的一個新特性。該特性從 Oracle 應(yīng)用服務(wù)器 11g 第 1 版開始就包含在 Oracle 應(yīng)用服務(wù)器中。如果您使用的是未裝載 UCP 的 JAR 文件(名為 ucp.jar)的舊版本軟件,或者您希望升級到最新的 UCP 版本,可以從 Oracle 數(shù)據(jù)庫 UCP 下載頁面獲取 ucp.jar。該程序包包含 UCP 的類,以便于將其包括在類路徑中來啟用該特性。所包括的路徑可能如下所示:
- ORACLE_HOME/ucp/lib/ucp.jar
上述的相關(guān)內(nèi)容就是對高性能 Oracle JDBC的描述,希望會給你帶來一些幫助在此方面。
【編輯推薦】
- Oracle進程中出現(xiàn)帶鎖狀況的解決
- Oracle內(nèi)存結(jié)構(gòu)里Process Memory實際操作步驟
- Oracle同時訪問N個SQL Server的實操
- Oracle細粒度如何進行訪問
- Oracle數(shù)據(jù)庫的異構(gòu)服務(wù)原理描述