2012-06-24 67 views
1

我想知道連接數據庫的性能。是否可以關閉每個查詢之間的數據庫連接,還是應該在打開之前將其保持打開狀態?打開/關閉連接的速度懲罰是否高?與數據庫建立連接的開銷

+0

@thecoon,不是真的,在這裏OP詢問表現不怎麼樣.. – Steve

回答

3

ADO.NET將爲您「連接」連接。當你關閉一個連接時,它並沒有真正關閉,而是放置在一個池中。當使用相同的連接字符串請求新連接時,將重用池中的連接。游泳池速度非常快,實際上,打開連接實際上是免費的。

最好的做法是打開當你需要它的連接,右後關閉:

using (var db = new SqlConnection(connectionString)) { 
    ... retrieve data ... 
} 

如果這樣的代碼,你不必擔心連接一輩子都沒有。

2

由於存在與創建,打開和關閉連接相關的開銷(即使連接池正在使用中),您應理想地連接一次,檢索所有數據,然後關閉並處理連接。您應確保使用using方法,這樣您就不會無意中將連接打開的時間超過必要的時間。

1

根據我的經驗,打開和關閉連接對於low volume application是有好處的,但對於high volume application,打開和關閉連接的成本變得很重要。因此,它依賴於上下文。在爲大型應用程序工作時,Connection pooling陷入了詭計。 ADO.NET絕對處理連接池。

相關問題