日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
百寶箱教你使用ADO.NETFAQ連接池

#T#ADO.NET有很多值得學(xué)習(xí)的地方,這里我們主要介紹ADO.NET FAQ連接池,包括介紹連接池的解決方法等方面。問(wèn)題,一種CS架構(gòu)的程序,直接把SQL Server作為服務(wù)端,每個(gè)客戶(hù)端直接連接數(shù)據(jù)庫(kù)操作,如果客戶(hù)端打開(kāi)的數(shù)量過(guò)多時(shí)SQL Server的連接數(shù)將會(huì)特別高,數(shù)據(jù)庫(kù)端形成性能瓶頸,這種情況下怎么辦?想了想,造成這種情況的原因是ADO.NET的內(nèi)部機(jī)制造成的。 ADO.NET中為了提高性能,所以使用了連接池,這樣每個(gè)請(qǐng)求就不必都創(chuàng)建一個(gè)連接,然后認(rèn)證,然后執(zhí)行SQL,而是從連接池中直接取出連接執(zhí)行 SQL,執(zhí)行完成后也并不是真正關(guān)閉連接,而是將該連接重新放回連接池中。如果有100個(gè)客戶(hù)端,每個(gè)客戶(hù)端在使用一段時(shí)間后連接池中保存了10個(gè)連接,那么在這種情況下,即使不在客戶(hù)端做任何操作,SQL Server上都有1000個(gè)連接,這樣不出性能問(wèn)題才怪。

目前創(chuàng)新互聯(lián)已為近1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、伍家崗網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

既然是連接池的問(wèn)題,針對(duì)該問(wèn)題的2個(gè)解決辦法:

1.關(guān)閉ADO.NET的連接池,每次執(zhí)行SQL時(shí)都是新建一個(gè)連接執(zhí)行,然后關(guān)閉。這樣做將使數(shù)據(jù)查詢(xún)有所減慢(每次都建立連接,每次都認(rèn)證,當(dāng)然會(huì)慢了),不過(guò)這個(gè)慢是毫秒級(jí)的,一般感覺(jué)不到的,但是如果一個(gè)操作就涉及到幾百個(gè)SQL語(yǔ)句的情況可能會(huì)明細(xì)感覺(jué)到減慢。修改方法特別簡(jiǎn)單,都不用修改代碼,在數(shù)據(jù)庫(kù)鏈接字符串中加入Pooling=False;即可。

2.修改架構(gòu),這種CS架構(gòu)除了性能問(wèn)題外還會(huì)出現(xiàn)其他的比如安全上的問(wèn)題。可以將直接連數(shù)據(jù)庫(kù)的方法改成連接服務(wù),這其中可以使用Remoting、Web服務(wù)等,當(dāng)然現(xiàn)在可以統(tǒng)一用WCF了。這樣做就只有服務(wù)程序去連接數(shù)據(jù)庫(kù),而客戶(hù)端只連接服務(wù)程序,這樣就不會(huì)出現(xiàn)連接池造成的瓶頸。不過(guò)這樣做代碼修改量很大,若真要改還是很痛苦的。

ADO.NET FAQ連接池

1. 何時(shí)創(chuàng)建ADO.NET FAQ連接池?

當(dāng)***個(gè)連接請(qǐng)求到來(lái)時(shí)創(chuàng)建連接池;連接池的建立由數(shù)據(jù)庫(kù)連接的連接字符創(chuàng)來(lái)決定。每一個(gè)連接池都與一個(gè)不同的連接字符串相關(guān)。當(dāng)一個(gè)新的連接請(qǐng)求到來(lái)時(shí)如果連接字符串和連接池使用的字符串相同,就從連接池取出一個(gè)連接;如果不相同,就新建一個(gè)連接池。

2. 何時(shí)關(guān)閉連接池?

當(dāng)連接池中的所有連接都已經(jīng)關(guān)閉時(shí)關(guān)閉連接池。

3. 當(dāng)連接池中的連接都已經(jīng)用完,而有新的連接請(qǐng)求到來(lái)時(shí)會(huì)發(fā)生什么?

當(dāng)連接池已經(jīng)達(dá)到它的***連接數(shù)目時(shí),有新的連接請(qǐng)求到來(lái)時(shí),新的連接請(qǐng)求將放置到連接隊(duì)列中。當(dāng)有連接釋放給連接池時(shí),連接池將新釋放的連接分配給在隊(duì)列中排隊(duì)的連接請(qǐng)求。你可以調(diào)用close和dispose將連接歸還給連接池。

4. 我應(yīng)該如何允許連接池?

對(duì)于.NET應(yīng)用程序而言,默認(rèn)為允許連接池。(這意味著你可以不必為這件事情做任何的事情)當(dāng)然,如果你可以在SQLConnection對(duì)象的連接字符串中加進(jìn)Pooling=true;確保你的應(yīng)用程序允許連接池的使用。

5. 我應(yīng)該如何禁止連接池?

ADO.NET默認(rèn)為允許數(shù)據(jù)庫(kù)連接池,如果你希望禁止連接池,可以使用如下的方式:

1) 使用SQLConnection對(duì)象時(shí),往連接字符串加入如下內(nèi)容:Pooling=False;

2) 使用OLEDBConnection對(duì)象時(shí),往連接字符串加入如下內(nèi)容:OLE DB Services=-4;


文章名稱(chēng):百寶箱教你使用ADO.NETFAQ連接池
文章路徑:http://www.5511xx.com/article/coheogj.html