ADO.net 連接池

什麼是連接池:
打開數據存儲區的連接時提高性能的一種機制。
上面書面的不是很形象,可以理解爲暫時託管數據庫連接的地方。等你下次需要的時候直接上那裏拿。

連接池存在的意義:
應用程序往往使用一個或有限的幾個連接配置,程序的操作導致許多相同的數據庫連接操作重複執行。

使用連接池爲我們省略了哪些步驟:
進行數據操作,往往是如下幾個步驟,連接到數據庫服務器,操作數據,關閉連接,其中連接到數據庫服務器,和關閉連接每次操作都是相同的,當數據讀取頻繁的時候這種成本尤其高昂。
當連接數據庫時,需要建立物理通道(如創建套接字,命名管道,服務器身份驗證,事務登記,分析連接字符串信息)使用連接池則可以省略每次操作的上述步驟。

ADO.NET如何分配連接池:
ADO.NET爲每個應用程序運行時配置一個或多個連接池(每個連接池對應一個不同的連接配置(連接字符串,憑據))

如何清理連接池:
連接池進程定期掃描池
把沒有顯式調用close或者dispose關閉的空閒連接,重新標誌爲“自由連接”(方便需要的連接請求調用)
把已經與數據庫服務器斷開的連接清除出連接池。
在ADO.NET2.0中的提供了兩個新方法
ClearAllPools 清楚給定提供程序的連接池的所有“自由連接”
ClearPool 釋放特定連接對象的“自由連接”(活動連接不受影響)

默認情況:
ADO.NET爲每個連接池設定的默認連接數是100。
ADO.NET數據庫連接默認啓用連接池。

如何禁用連接池:
1.在連接字符串中設置 Pooling=false
2.設置SqlConnectionStringBuilder的Pooling屬性爲false

強制使用新連接池:
最簡單的方法,在連接字符串後面加一個空格(目的改變連接字符串)

爲什麼會發生連接池溢出:
比如默認情況下每個連接池有100個最大連接數。
每個數據庫請求需要使用一個連接,如果池中的連接都在使用(活動連接),並且連接數沒有達到最大連接數,則可以創建新連接,如果池中活動連接數已經達到最大連接數,則請求進入請求隊列等待,當等到超過等待時間(ConnectionTimeout )時則發生溢出錯誤(InvalidOperationException )。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章