<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-51  評論-14  文章-0  trackbacks-0
    數(shù)據(jù)庫連接是一種關(guān)鍵的有限的昂貴的資源,這一點在多用戶的網(wǎng)頁應(yīng)用程序中體現(xiàn)得尤為突出。對數(shù)據(jù)庫連接的管理能顯著影響到整個應(yīng)用程序的伸縮性和健壯性,影響到程序的性能指標(biāo)。數(shù)據(jù)庫連接池正是針對這個問題提出來的。

    數(shù)據(jù)庫連接池負責(zé)分配、管理和釋放數(shù)據(jù)庫連接,它允許應(yīng)用程序重復(fù)使用一個現(xiàn)有的數(shù)據(jù)庫連接,而再不是重新建立一個;釋放空閑時間超過最大空閑時間的數(shù)據(jù)庫連接來避免因為沒有釋放數(shù)據(jù)庫連接而引起的數(shù)據(jù)庫連接遺漏。這項技術(shù)能明顯提高對數(shù)據(jù)庫操作的性能。

    數(shù)據(jù)庫連接池在初始化時將創(chuàng)建一定數(shù)量的數(shù)據(jù)庫連接放到連接池中,這些數(shù)據(jù)庫連接的數(shù)量是由最小數(shù)據(jù)庫連接數(shù)來設(shè)定的。無論這些數(shù)據(jù)庫連接是否被使用,連接池都將一直保證至少擁有這么多的連接數(shù)量。連接池的最大數(shù)據(jù)庫連接數(shù)量限定了這個連接池能占有的最大連接數(shù),當(dāng)應(yīng)用程序向連接池請求的連接數(shù)超過最大連接數(shù)量時,這些請求將被加入到等待隊列中。數(shù)據(jù)庫連接池的最小連接數(shù)和最大連接數(shù)的設(shè)置要考慮到下列幾個因素:

    1) 最小連接數(shù)是連接池一直保持的數(shù)據(jù)庫連接,所以如果應(yīng)用程序?qū)?shù)據(jù)庫連接的使用量不大,將會有大量的數(shù)據(jù)庫連接資源被浪費;

    2) 最大連接數(shù)是連接池能申請的最大連接數(shù),如果數(shù)據(jù)庫連接請求超過此數(shù),后面的數(shù)據(jù)庫連接請求將被加入到等待隊列中,這會影響之后的數(shù)據(jù)庫操作。

    3) 如果最小連接數(shù)與最大連接數(shù)相差太大,那么最先的連接請求將會獲利,之后超過最小連接數(shù)量的連接請求等價于建立一個新的數(shù)據(jù)庫連接。不過,這些大于最小連接數(shù)的數(shù)據(jù)庫連接在使用完不會馬上被釋放,它將被放到連接池中等待重復(fù)使用或是空閑超時后被釋放。

    在傳統(tǒng)的兩層結(jié)構(gòu)中,客戶端程序在啟動時打開數(shù)據(jù)庫連接,在退出程序時關(guān)閉數(shù)據(jù)庫連接。這樣,在整個程序運行中,每個客戶端始終占用一個數(shù)據(jù)庫連接,即使在大量沒有數(shù)據(jù)庫操作的空閑時間,如用戶輸入數(shù)據(jù)時,從而造成數(shù)據(jù)庫連接的使用效率低下。

    在三層結(jié)構(gòu)模式中,數(shù)據(jù)庫連接通過中間層的連接池管理。只有當(dāng)用戶真正需要進行數(shù)據(jù)庫操作時,中間層才從連接池申請一個連接,數(shù)據(jù)庫操作完畢,連接立即釋放到連接池中,以供其他用戶使用。這樣,不僅大大提高了數(shù)據(jù)庫連接的使用效率,使得大量用戶可以共享較少的數(shù)據(jù)庫連接,而且省去了建立連接的時間。

    連接池的配置使用

    數(shù)據(jù)庫連接池是應(yīng)用服務(wù)器的一項基本功能,我們以Apusic Application Server為例,來說明JDBC連接池的配置使用。

    Apusic JDBC連接池提供對多種數(shù)據(jù)庫的支持,如Oracle、MS SqlServer、Sybase、Informix、DB2等。

    Apusic JDBC連接池可以通過數(shù)據(jù)庫本身的JDBC Driver連接到數(shù)據(jù)庫,也可以通過JDBC-ODBC橋連接到數(shù)據(jù)庫。下面我們以O(shè)racle為例說明如何配置連接池:

    Oracle數(shù)據(jù)庫的JDBC Driver包文件classes111.zip在/usr/oracle/jdbc/lib(假設(shè)oracle的安裝目錄是/usr/oracle)目錄下,首先將classes111.zip加入到系統(tǒng)的CLASSPATH中。然后在apusic/config/apusic.conf(假設(shè)安裝目錄為apusic) 中作如下設(shè)置:

    <SERVICE

    CLASS="com.apusic.jdbc.PoolManager"

    NAME="JdbcPool:name=jdbc/sample"

    >

    <ATTRIBUTE NAME="ExpirationTime" VALUE="300"/>

    <ATTRIBUTE NAME="MinCapacity" VALUE="5"/>

    <ATTRIBUTE NAME="URL" VALUE="jdbc:oracle:thin:@192.168.19.136:1521:orcl"/>

    <ATTRIBUTE NAME="ConnectionProperties" VALUE="user=gtj,password=abc123"/>

    <ATTRIBUTE NAME="DriverClassName" VALUE="oracle.jdbc.driver.OracleDriver" />

    <ATTRIBUTE NAME="MaxCapacity" VALUE="30"/>

    </SERVICE>

    ExpirationTime: 超時時間,單位是秒。當(dāng)一個數(shù)據(jù)庫連接超過expirationTime設(shè)定時間不被使用

    時,系統(tǒng)會自動關(guān)閉這個數(shù)據(jù)庫連接。默認值為300秒

    MinCapacity: 最小連接數(shù)

    URL: 數(shù)據(jù)庫的URL

    ConnectionProperties: 連接屬性,其中:user用戶名,password密碼

    DriverClassName: JDBC驅(qū)動程序類名

    MaxCapacity: 最大連接數(shù)

    192.168.19.136: oracle所在計算機的IP地址。

    調(diào)用連接池

    我們以一個JSP程序為例,說明如何使用連接池。首先通過JNDI得到DataSource,再的得到連接Connection,如下例所示:

    <html>

    <head>

    <title>Jsp sample</title>

    </head>

    <body>

    <p>

    <%@ page contentType="text/html;charset=gb2312" %>

    <%@ page import="

    java.sql.*,

    javax.naming.*,

    javax.sql.*

    "%>

    <%

    try{

    Context ctx = new InitialContext();

    DataSource ds = (DataSource)ctx.lookup("jdbc/sample");

    Connection con = ds.getConnection();

    Statement stmt = con.createStatement();

    ResultSet rs = stmt.executeQuery("select ENAME from EMP");

    while(rs.next()){

    out.println("<p>" + rs.getString(1));

    }

    rs.close();

    stmt.close();

    }catch(Exception e){

    System.out.println("jsp:" + e.getMessage());

    }finally{

    try{

    con.close();

    }catch(Exception e1){}

    }

    %>

    </body>

    </html>

    posted on 2008-06-15 14:30 Hank1026 閱讀(13350) 評論(0)  編輯  收藏 所屬分類: 每日積累
    主站蜘蛛池模板: 亚洲第一页在线观看| 色九月亚洲综合网| 在线播放免费播放av片| 五月天国产成人AV免费观看| 亚洲最大成人网色| 日本免费一二区在线电影| 久久精品无码专区免费| 亚洲国产精品张柏芝在线观看| 日韩伦理片电影在线免费观看| a在线免费观看视频| 亚洲色大情网站www| 久久精品国产亚洲香蕉 | 四虎免费久久影院| 国偷自产一区二区免费视频| 亚洲欧美日韩综合久久久久| 亚洲精品一品区二品区三品区| 99精品国产免费久久久久久下载| 永久免费无码日韩视频| 亚洲一区二区三区精品视频| 在线观看亚洲天天一三视| 亚洲免费综合色在线视频| baoyu122.永久免费视频| 亚洲av无码有乱码在线观看| 亚洲日本精品一区二区| mm1313亚洲国产精品美女| 成人无码区免费A片视频WWW | 国产片免费在线观看| 精品无码无人网站免费视频| 一级特黄aaa大片免费看| 中中文字幕亚洲无线码| 久久久久亚洲AV成人无码| 亚洲午夜成人精品电影在线观看| 很黄很色很刺激的视频免费| 免费看成人AA片无码视频吃奶| 相泽南亚洲一区二区在线播放| 亚洲专区一路线二| 亚洲一区影音先锋色资源| 亚洲熟妇中文字幕五十中出| 免费一级一片一毛片| 国产精品酒店视频免费看| 在线看片韩国免费人成视频|