溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Ado.Net Sybase怎么用

發(fā)布時(shí)間:2021-11-03 16:32:44 來(lái)源:億速云 閱讀:129 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹了Ado.Net Sybase怎么用,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

前幾天同事問我一個(gè)問題,一種CS架構(gòu)的程序,直接把SQL Server作為服務(wù)端,每個(gè)客戶端直接連接數(shù)據(jù)庫(kù)操作(kay注:S2的cs項(xiàng)目就是這種架構(gòu)),如果客戶端打開的數(shù)量過多時(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è)客戶端,每個(gè)客戶端在使用一段時(shí)間后連接池中保存了10個(gè)連接,那么在這種情況下,即使不在客戶端做任何操作,SQL Server上都有1000個(gè)連接,這樣不出性能問題才怪。

既然是連接池的問題,那么我就針對(duì)該問題想到了2個(gè)解決辦法:

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

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

以下是網(wǎng)上找到的一篇介紹ADO.NET連接池的文章,感覺不錯(cuò)。

連接池允許應(yīng)用程序從連接池中獲得一個(gè)連接并使用這個(gè)連接,而不需要為每一個(gè)連接請(qǐng)求重新建立一個(gè)連接。一旦一個(gè)新的連接被創(chuàng)建并且放置在連接池中,應(yīng)用程序就可以重復(fù)使用這個(gè)連接而不必實(shí)施整個(gè)數(shù)據(jù)庫(kù)連接創(chuàng)建過程。

當(dāng)應(yīng)用程序請(qǐng)求一個(gè)連接時(shí),連接池為該應(yīng)用程序分配一個(gè)連接而不是重新建立一個(gè)連接;當(dāng)應(yīng)用程序使用完連接后,該連接被歸還給連接池而不是直接釋放。

如何實(shí)現(xiàn)連接池

確保你每一次的連接使用相同的連接字符串(和連接池相同);只有連接字符串相同時(shí)連接池才會(huì)工作。如果連接字符串不相同,應(yīng)用程序就不會(huì)使用連接池而是創(chuàng)建一個(gè)新的連接。

優(yōu)點(diǎn)

使用連接池的最主要的優(yōu)點(diǎn)是性能。創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)連接所耗費(fèi)的時(shí)間主要取決于網(wǎng)絡(luò)的速度以及應(yīng)用程序和數(shù)據(jù)庫(kù)服務(wù)器的(網(wǎng)絡(luò))距離,而且這個(gè)過程通常是一個(gè)很耗時(shí)的過程。而采用數(shù)據(jù)庫(kù)連接池后,數(shù)據(jù)庫(kù)連接請(qǐng)求可以直接通過連接池滿足而不需要為該請(qǐng)求重新連接、認(rèn)證到數(shù)據(jù)庫(kù)服務(wù)器,這樣就節(jié)省了時(shí)間。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Ado.Net Sybase怎么用”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI