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

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

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

2024-08-29 13:34:45
字體:
供稿:網(wǎng)友

  .Net與Oracle的數(shù)據(jù)庫連接池(Connection Pool)
概述:
數(shù)據(jù)庫連接池答應(yīng)應(yīng)用程序重用已存在于池中的數(shù)據(jù)庫連接,以避免反復(fù)的建立新的數(shù)據(jù)庫連接。這種技術(shù)能有效提高應(yīng)用程序的伸縮性,因?yàn)橛邢薜臄?shù)據(jù)庫連接能夠給大量的客戶提供服務(wù)。這種技術(shù)同時(shí)也提高的系統(tǒng)性能,避免了大量建立新連接的開銷。

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

開發(fā)人員應(yīng)當(dāng)注重不要依靠垃圾回收機(jī)制去釋放數(shù)據(jù)庫連接,因?yàn)楫?dāng)參數(shù)超出作用域時(shí),數(shù)據(jù)庫連接并沒有得必要的關(guān)閉,這種數(shù)據(jù)庫資源泄漏將導(dǎo)致建立新連接時(shí)拋出連接錯(cuò)誤。

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

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

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

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

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

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

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

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

用連接字符串要害字控制數(shù)據(jù)庫連接池
OracleConnection對(duì)象的屬性ConnectionString有一些能支持連接池控制的key-value字符串。下表是這些key-value字符串的具體說明。

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

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

為0時(shí)將被視為最大連接時(shí)間。

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

Max Pool Size
100
連接池能建立的最大數(shù)據(jù)庫連接數(shù)。

Min Pool Size
0
連接池要保持的最小數(shù)據(jù)庫連接數(shù)。

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 多伦县| 贵定县| 达州市| 广平县| 汾阳市| 光山县| 灵宝市| 正定县| 唐海县| 上饶市| 安顺市| 炉霍县| 镇宁| 沾益县| 景泰县| 平乡县| 新巴尔虎右旗| 三都| 永顺县| 巴林右旗| 刚察县| 广丰县| 石城县| 北宁市| 贵港市| 白山市| 永修县| 南康市| 黎城县| 化德县| 墨玉县| 巴里| 密云县| 红河县| 年辖:市辖区| 合肥市| 吐鲁番市| 尚志市| 深泽县| 隆德县| 彭水|