2009-10-29 60 views
3

我正在使用.Net 2.0 + SQL Server 2005 Enterprise + VSTS 2008 + C#+ ADO.Net來開發ASP.Net Web應用程序。 ASP.Net Web應用程序以數據庫爲中心/驅動。我想知道在ADO.Net連接字符串設置中打開/關閉線程池設置時是否有任何關於性能差異的性能參考數據?性能我是指可以支持的併發連接和從ADO.Net客戶端執行的特定SQL命令的執行時間?數據庫連接池如何影響性能?

感謝avdance, 喬治

回答

4

我沒有在任何一方面表現統計,但也許提醒一句:你可能會導致太多的小池,而不是一個大池。

ADO.NET將創建一個新的連接池

  • 每個連接字符串;它是對此非常挑剔,太 - 如果你有兩個連接字符串是由哪怕只是一個單一的空間或不同的東西,那些被認爲是兩個獨立的連接字符串,並會導致單獨的連接池創建

  • 每個Windows憑據如果使用的是「集成安全」(受信任的連接)設置

所以,如果你有一個連接字符串像

server=MyDBServer;database=MyDatabase;integrated security=SSPI; 

將爲每個可區分用戶創建一個連接池 - 這相當違反直覺,但這就是它的方式(並且不能影響/關閉)。

查看ADO上的MSDN docs。有關詳細信息,NET連接池:

當連接第一次打開時,基於一個 精確匹配算法創建 連接池 同夥與在連接 連接字符串池。 每個連接池都與一個獨特的連接字符串關聯, 。 當打開一個新連接時,如果連接字符串 與現有池不匹配,則會創建一個新池 。集成當 安全使用,每視窗 身份連接每 工藝彙集,每個應用程序域,每個 連接字符串和連接字符串也必須是 完全匹配;提供的關鍵字 以不同順序連接的 連接將單獨彙集。

另外,如果你有這兩個連接字符串:

server=MyDBServer;database=MyDatabase;user id=tom;pwd=top$secret 

server=MyDBServer;database=MyDatabase;user id=tom; pwd=top$secret; 

那些被認爲不同連接字符串,因此兩個單獨的連接池將被創建。

當試圖測量連接池的影響時,這是要注意的事情!

馬克

+0

感謝你的建議,馬克! – George2 2009-10-30 04:53:13

4

性能差異會因應用程序有很大的不同,所以你應該期望什麼樣的收益沒有硬數據。

行動爲你把它帶到措施它通過在你的應用程序做壓力測試,它有/無配置池和看看它是如何交易會最好的課程。

WCAT是一種可用於加載ASP.NET應用程序的壓力工具。

您還可以嘗試一個探查器(其中有很多)來監視您的應用程序,以瞭解它在壓力下如何執行。

一些廓線儀:ANTSdotTrace

+1

你推薦的輪廓儀真的很酷。但不是免費的。 :-) 任何Microsoft提供的工具(我有MSDN許可證,因此我認爲我可以使用Microsoft提供的任何非免費工具,許可證已涵蓋)或免費工具? – George2 2009-10-30 04:46:50

2

寫一個小progeam訪問數據庫。打開數據庫連接而不關閉它並循環100次。

  1. 監控您每次需要獲取數據的時間。
  2. 使用連接池時,監視使用「netstat的 - 」
  3. 用/服務器端的連接,而不彙集
+0

你能更詳細地描述爲什麼我們需要第2步,並且你想要第2步來證明什麼? – George2 2009-10-30 04:41:03

+0

步驟2用於監視您需要在服務器端訪問數據庫的連接數量。我的經驗是,如果你有共享池,2或3個連接就足夠了,但如果你不這樣做,你可能會有很多併發用戶。 – 2009-10-30 13:15:04

2

你說「線程池」,但顯然是在談論連接池爲您的標題所示。

創建新的數據庫連接存在性能開銷。這是一個資源密集型操作,這就是爲什麼我們有ADO.NET連接池。有效的連接沒有關閉,但僅僅返回到它們保持活動的池中,並且可以被同一代碼庫的其他部分(AppDomain內部)重用。

一個ADO.NET應用程序池是在每個唯一連接字符串中創建的,因此值得注意的是,當您使用集成安全性時,您將失去連接池的好處,因爲每個DB驗證用戶將實際有一個連接池。

+0

「你說'線程池',但顯然你的標題顯示是在討論連接池。」 - 謝謝指出。我已更正了我的帖子標題。:-) – George2 2009-10-30 04:48:26

+0

我的問題不是關於數據庫連接池是如何工作的,而是關於與使用和不使用數據庫連接池相比的性能差異的任何一般數據。任何文件參考? – George2 2009-10-30 04:49:25