ASP.NET數(shù)據(jù)庫連接池設置淺析
對于ASP.NET數(shù)據(jù)庫連接池可以使用一組名稱-值對以鏈接字符串的形式配置鏈接池。例如,可以配置池是否有效(默認是有效的),池的***、最小容量,用于打開鏈接的排隊請求被阻斷的時間。下面的示例字符串配置了池的***和最小容量。
"Server=(local); Integrated Security=SSPI; Database=Northwind;
Max Pool Size=75; Min Pool Size=5"
ASP.NET數(shù)據(jù)庫連接池摘要
連接池允許應用程序從連接池中獲得一個連接并使用這個連接,而不需要為每一個連接請求重新建立一個連接。一旦一個新的連接被創(chuàng)建并且放置在連接池中,應用程序就可以重復使用這個連接而不必實施整個數(shù)據(jù)庫連接創(chuàng)建過程。
當應用程序請求一個連接時,連接池為該應用程序分配一個連接而不是重新建立一個連接;當應用程序使用完連接后,該連接被歸還給連接池而不是直接釋放。
如何實現(xiàn)ASP.NET數(shù)據(jù)庫連接池
確保你每一次的連接使用相同的連接字符串(和連接池相同);只有連接字符串相同時連接池才會工作。如果連接字符串不相同,應用程序就不會使用連接池而是創(chuàng)建一個新的連接。
ASP.NET數(shù)據(jù)庫連接池優(yōu)點
使用連接池的最主要的優(yōu)點是性能。創(chuàng)建一個新的數(shù)據(jù)庫連接所耗費的時間主要取決于網(wǎng)絡的速度以及應用程序和數(shù)據(jù)庫服務器的(網(wǎng)絡)距離,而且這個過程通常是一個很耗時的過程。而采用數(shù)據(jù)庫連接池后,數(shù)據(jù)庫連接請求可以直接通過連接池滿足而不需要為該請求重新連接、認證到數(shù)據(jù)庫服務器,這樣就節(jié)省了時間。
ASP.NET數(shù)據(jù)庫連接池缺點
數(shù)據(jù)庫連接池中可能存在著多個沒有被使用的連接一直連接著數(shù)據(jù)庫(這意味著資源的浪費)。
技巧和提示
1.當你需要數(shù)據(jù)庫連接時才去創(chuàng)建連接池,而不是提前建立。一旦你使用完連接立即關閉它,不要等到垃圾收集器來處理它。
2.在關閉數(shù)據(jù)庫連接前確保關閉了所有用戶定義的事務。
3.不要關閉數(shù)據(jù)庫中所有的連接,至少保證連接池中有一個連接可用。如果內(nèi)存和其他資源是你必須首先考慮的問題,可以關閉所有的連接,然后在下一個請求到來時創(chuàng)建連接池。
ASP.NET數(shù)據(jù)庫連接池FAQ
1.何時創(chuàng)建連接池?
當***個連接請求到來時創(chuàng)建連接池;連接池的建立由數(shù)據(jù)庫連接的連接字符創(chuàng)來決定。每一個連接池都與一個不同的連接字符串相關。
當一個新的連接請求到來時如果連接字符串和連接池使用的字符串相同,就從連接池取出一個連接;如果不相同,就新建一個連接池。
2.何時關閉連接池?
當連接池中的所有連接都已經(jīng)關閉時關閉連接池。
3.當連接池中的連接都已經(jīng)用完,而有新的連接請求到來時會發(fā)生什么?
當連接池已經(jīng)達到它的***連接數(shù)目時,有新的連接請求到來時,新的連接請求將放置到連接隊列中。當有連接釋放給連接池時,連接池將新釋放的連接分配給在隊列中排隊的連接請求。你可以調(diào)用close和dispose將連接歸還給連接池。
4.我應該如何允許連接池?
對于.NET應用程序而言,默認為允許連接池。(這意味著你可以不必為這件事情做任何的事情)當然,如果你可以在SQLConnection對象的連接字符串中加進Pooling=true;確保你的應用程序允許連接池的使用。
5.我應該如何禁止連接池?
ADO.NET默認為允許數(shù)據(jù)庫連接池,如果你希望禁止連接池,可以使用如下的方式:
1) 使用SQLConnection對象時,往連接字符串加入如下內(nèi)容:Pooling=False;
2) 使用OLEDBConnection對象時,往連接字符串加入如下內(nèi)容:OLE DB Services=-4;
ASP.NET數(shù)據(jù)庫連接池設置和操作的基本信息就向你介紹到這里,希望對你有所幫助。
【編輯推薦】