国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

.Net與Oracle的數(shù)據(jù)庫連接池(Connection Pool)

2024-07-10 13:03:31
字體:
供稿:網(wǎng)友
.net與oracle的數(shù)據(jù)庫連接池(connection pool)
概述:
數(shù)據(jù)庫連接池允許應(yīng)用程序重用已存在于池中的數(shù)據(jù)庫連接,以避免反復(fù)的建立新的數(shù)據(jù)庫連接。這種技術(shù)能有效提高應(yīng)用程序的伸縮性,因?yàn)橛邢薜臄?shù)據(jù)庫連接能夠給大量的客戶提供服務(wù)。這種技術(shù)同時也提高的系統(tǒng)性能,避免了大量建立新連接的開銷。

開發(fā)一個具有伸縮性的、高性能應(yīng)用程序應(yīng)該最大限度的減少建立連接所花費(fèi)的時間,保持?jǐn)?shù)據(jù)庫連接最大限度的有效,以存取數(shù)據(jù)。當(dāng)一個數(shù)據(jù)庫連接關(guān)閉時,它只是由連接池收回以待重用,并未真正釋放。但是,如果連接池被釋放,數(shù)據(jù)庫連接將會被釋放掉。

開發(fā)人員應(yīng)當(dāng)注意不要依賴?yán)厥諜C(jī)制去釋放數(shù)據(jù)庫連接,因?yàn)楫?dāng)參數(shù)超出作用域時,數(shù)據(jù)庫連接并沒有得必要的關(guān)閉,這種數(shù)據(jù)庫資源泄漏將導(dǎo)致建立新連接時拋出連接錯誤。

建立數(shù)據(jù)庫連接池
當(dāng)打開一個數(shù)據(jù)庫連接時,一個數(shù)據(jù)庫連接池也就創(chuàng)建了。數(shù)據(jù)庫連接池的創(chuàng)建與數(shù)據(jù)庫連接字符串精確的相關(guān)(包括空格、大小寫)。所有的連接池是根據(jù)連接字符串來區(qū)分的。在創(chuàng)建一個新的數(shù)據(jù)庫連接時,如果連接字符串不完全相同,將創(chuàng)建不同的連接池。

一旦數(shù)據(jù)庫連接池被創(chuàng)建,它將一直存在直到該進(jìn)程結(jié)束。維護(hù)一個非活動狀態(tài)的連接池幾乎不需要什么系統(tǒng)開銷。

連接池中的數(shù)據(jù)庫連接
連接池根據(jù)唯一的連接字符串被創(chuàng)建。在連接池被創(chuàng)建的同時,連接池將創(chuàng)建最小的數(shù)據(jù)庫連接,當(dāng)連接不夠用時,連接池將逐個添加數(shù)據(jù)庫連接直到達(dá)到最大連接數(shù),此后的連接請求將被加入請求隊列里。當(dāng)調(diào)用數(shù)據(jù)庫連接對象的close方法或dispose方法時,數(shù)據(jù)庫連接將被數(shù)據(jù)庫連接池回收。

當(dāng)數(shù)據(jù)庫連接使用完成后,要調(diào)用close方法或dispose方法將它返回連接池。沒有顯式釋放的數(shù)據(jù)庫連接可能會沒有返回連接池。

注意不要在類的finalize方法中調(diào)用任何管理類如connection,datareader等的finalize方法,必須將數(shù)據(jù)庫連接的釋放權(quán)交給連接池。

釋放數(shù)據(jù)庫連接
當(dāng)數(shù)據(jù)庫連接超時或服務(wù)已經(jīng)完成時,連接池將會將其資源釋放,這只能通過試圖與數(shù)據(jù)庫通訊來判斷。如果發(fā)現(xiàn)數(shù)據(jù)庫連接不可用,它將被標(biāo)記為不可用資源。數(shù)據(jù)庫連接池將定時掃描數(shù)據(jù)庫連接,釋放所有不可用資源。

如果發(fā)現(xiàn)現(xiàn)有的數(shù)據(jù)庫連接不可用,那么可能是該連接被數(shù)據(jù)庫連接池標(biāo)記為不可用資源了,這時將拋出一個異常。盡管如此,你還是必須釋放連接,將它返回連接池。

支持transaction
數(shù)據(jù)庫連接池內(nèi)的數(shù)據(jù)庫連接是按照transaction context劃分的,每當(dāng)連接池接到連接請求時,他將返回與請求者transaction context相匹配的數(shù)據(jù)庫連接。因此,每個連接池都由數(shù)個transaction context相關(guān)的數(shù)據(jù)庫連接和一個transaction context無關(guān)的數(shù)據(jù)庫連接組成。當(dāng)數(shù)據(jù)庫連接被返回連接池時,它將被放回對應(yīng)的transaction context組中。

用連接字符串關(guān)鍵字控制數(shù)據(jù)庫連接池
oracleconnection對象的屬性connectionstring有一些能支持連接池控制的key-value字符串。下表是這些key-value字符串的詳細(xì)說明。

名稱
默認(rèn)值
說明

connection lifetime
0
當(dāng)數(shù)據(jù)庫連接被返回到連接池中時,它的創(chuàng)建時間將與當(dāng)前時間比較,如果超過了connection lifetime規(guī)定的時間,它將被釋放掉。

為0時將被視為最大連接時間。

enlist
'true'
當(dāng)此值為true時,池中現(xiàn)存的所有數(shù)據(jù)庫連接將被加入到它的創(chuàng)建線程的transaction context中。如果不存在這個transaction context則無任何變化。

max pool size
100
連接池能建立的最大數(shù)據(jù)庫連接數(shù)。

min pool size
0
連接池要保持的最小數(shù)據(jù)庫連接數(shù)。

pooling
'true'
當(dāng)設(shè)為true時,數(shù)據(jù)庫連接將由相應(yīng)的連接池管理。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 马公市| 元氏县| 潮州市| 新津县| 唐海县| 厦门市| 东丰县| 西宁市| 双牌县| 黄陵县| 托克逊县| 佳木斯市| 芦溪县| 陇南市| 泌阳县| 大余县| 三穗县| 濮阳县| 无极县| 平乡县| 牟定县| 上虞市| 石阡县| 桂阳县| 尼玛县| 莱阳市| 玛多县| 开远市| 内乡县| 江西省| 秦安县| 仙游县| 宕昌县| 平和县| 合肥市| 广元市| 谢通门县| 达拉特旗| 东安县| 峡江县| 都安|