2011-03-09 373 views
16

我不明白常規連接和連接池之間的語法差異。.net連接池

當我使用using鍵如:

using (SqlConnection connection = new SqlConnection(connectionString)) 
{ 
    connection.Open(); 
    command.ExecuteNonQuery(); 
} 

這是執行連接池的方式嗎?

回答

29

你可以閱讀關於連接池here

基本上只要連接字符串是相同的(包括大小寫),連接將取自同一個連接池。

2

據我所知,

連接池是通過ado.net客戶管理,從做對數據庫連接是昂貴的操作。 ado.net創建連接池,當你需要連接時,它會嘗試從池中提供連接。即使你說客戶端代碼關閉連接,ado.net也會保留該連接以備後用。您不管理連接池

連接池在應用程序的web.config文件中被告知。當你使用使用語句時,你告訴該對象應該在使用結束時處置。

0

SQL連接默認是連接池。 (最大池大小= 100)

您可以從連接字符串配置連接池。

你可以從here找到更多關於連接字符串的信息。

17

您不控制具有連接但具有連接字符串的連接池。大多數ADO提供程序使用默認情況下的池。

using聲明用於調用對象的方法Dispose(在本例中爲連接類)。通過這樣做,根據連接字符串配置,連接將返回到池或斷開連接。

如果正在使用分佈式事務(在.Net 4中使用TransactionScope),您還應該知道連接不會直接返回到池中。交易完成/回滾時將返回連接。

如果你不使用using,你應該確保您儘快撥打Connection.Close()。特別是如果你的應用程序在某種形式的負載下。

9

連接池的管理是使用SqlConnection從上面抽象出來的。默認情況下,ADO.NET連接池處於打開狀態,您可以進一步控制它,例如將其關閉或控制連接字符串中的池大小,例如

關閉

Provider=SQLOLEDB;Data Source=localhost;Integrated Security=SSPI;Pooling=false; 

或控制的最小和最大

Provider=SQLOLEDB;Data Source=localhost;Integrated Security=SSPI;Min Pool Size=5; Max Pool Size=20; 

更多細節解釋和方法來驗證池 http://www.codeproject.com/KB/dotnet/ADONET_ConnectionPooling.aspx

0

連接池意味着一旦連接對象是然後打開然後再重新創建連接a再次Ado.Net存儲或緩存Pooler中的連接對象。 稍後如果有人打開連接,那麼它將不會執行它已經執行的一系列步驟,現在它只是從已經緩存的連接池中查找連接。

一旦我們完成對數據庫的操作,我們需要關閉連接,然後該連接將返回到池中,並準備好在下一次打開呼叫時重新使用該連接。

更多與連接池的最好的例子: - http://www.gurujipoint.com/2017/07/what-is-connection-pooling-in-aspnet.html