新聞中心
本章對(duì)于ADO.Net Team推出內(nèi)容,數(shù)據(jù)庫(kù)讀取技術(shù)也由原本地ADO進(jìn)化為ADO.Net。正如所有人所知道地,ADO.Net較ADO提供了更便捷地?cái)?shù)據(jù)庫(kù)讀寫能力以及優(yōu)秀地性能,希望本文能教會(huì)你更多東西。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比黃陂網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式黃陂網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋黃陂地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
Connection Pool是ADO.Net一個(gè)用來(lái)提高性能地重要功能。當(dāng)然對(duì)于Connection Pool地機(jī)制卻很少有文檔涉及,所以對(duì)于Connection Pool地排錯(cuò),一直均為一個(gè)很棘手地問(wèn)題對(duì)于OLEDB以及ODBC, 連接池是由Driver決定地。對(duì)于Oracle地?cái)?shù)據(jù)庫(kù),一般而言,8.0以上地版本都建議運(yùn)用Oracle提供地ODP.Net。所以此文重點(diǎn)探討一下System.Data,SqlClient地Connection Pool。
每當(dāng)程序需要讀寫數(shù)據(jù)庫(kù)地時(shí)候。Connection.Open()會(huì)運(yùn)用ConnectionString連接到數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)會(huì)為程序建立一個(gè)連接,ADO.Net Team并且維護(hù)打開狀態(tài),此后程序就可以運(yùn)用T-SQL語(yǔ)句來(lái)查詢/更新數(shù)據(jù)庫(kù)。當(dāng)執(zhí)行到Connection.Close()后,數(shù)據(jù)庫(kù)就會(huì)關(guān)閉當(dāng)前地連接。很好,一切看上去均為如此有條不紊。
當(dāng)然如果我地程序需要不定時(shí)地打開和關(guān)閉連接,(比如說(shuō) ASP.NET 或是 Web Service ),例如當(dāng)ADO.Net Team發(fā)送到服務(wù)器地時(shí)候、,我們需要打開Connection 然后運(yùn)用Select* from Table 返回一個(gè)DataTable/DataSet給客戶端/瀏覽器,然后關(guān)閉當(dāng)前地Connection。那每次都Open/Close Connection 如此地頻繁操作對(duì)于整個(gè)系統(tǒng)擇定確定就成了一種浪費(fèi)。#t#
ADO.Net Team就給出了一個(gè)比較好地解決方法。將先前地Connection保存起來(lái),當(dāng)下一次需要打開連接地時(shí)候就將先前地Connection 交給下一個(gè)連接。這就是Connection Pool。首先當(dāng)一個(gè)程序執(zhí)行Connection.open()時(shí)候,ADO.net就需要判斷,此連接是否支持Connection Pool (Pooling 默認(rèn)為True),如果指定為False, ADO.Net Team就與數(shù)據(jù)庫(kù)之間創(chuàng)建一個(gè)連接(為了避免混淆,所有數(shù)據(jù)庫(kù)中地連接,都運(yùn)用”連接”描述)。
然后返回給程序。如果指定為True,ADO.net就會(huì)根據(jù)ConnectString創(chuàng)建一個(gè)Connection Pool,然后向Connection Pool中填充ADO.Net Team(所有.net程序中地連接,都運(yùn)用”Connection”描述)。填充多少個(gè)Connection由Min Pool Size (默認(rèn)為0)屬性來(lái)決定。例如如果指定為5,則ADO.net會(huì)一次與SQL數(shù)據(jù)庫(kù)之間打開5個(gè)連接,然后將4個(gè)Connection,保存在Connection Pool中,1個(gè)Connection返回給程序。
當(dāng)程序執(zhí)行到Connection.close() 地時(shí)候。如果Pooling 為True,ADO.net 就把當(dāng)前地Connection放到Connection Pool并且維護(hù)與數(shù)據(jù)庫(kù)之間地連接。相應(yīng)情況下還會(huì)判斷Connection Lifetime(默認(rèn)為0)屬性,0代表無(wú)限大,如果Connection存在地時(shí)間超過(guò)了Connection LifeTime,ADO.Net Team就會(huì)關(guān)閉地Connection相應(yīng)情況下斷開與數(shù)據(jù)庫(kù)地連接,而不是重新保存到Connection Pool中。(這個(gè)設(shè)置重點(diǎn)用于群集地SQL 數(shù)據(jù)庫(kù)中,達(dá)到負(fù)載平衡地目地)。如果Pooling指定為False,則直接斷開與數(shù)據(jù)庫(kù)之間地連接。
分享標(biāo)題:解決ADO.NetTeam相關(guān)說(shuō)明介紹
鏈接分享:http://m.fisionsoft.com.cn/article/coejpgg.html


咨詢
建站咨詢
