[研究][ASP.NET]SQL Server 資料庫連線池
2022-05-02
環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C#
********************************************************************************
最近研究,筆記一下,先看一下
SQL Server 連接共用 (ADO.NET)
https://docs.microsoft.com/zh-tw/dotnet/framework/data/adonet/sql-server-connection-pooling
SQL Server Connection Pooling (ADO.NET)
https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql-server-connection-pooling
資料庫的連線建立很花時間,所以每一個連線,就放在一個 Pool 中,下次若使用的連線已經在某個 Pool 中,直接拿來用,可節省時間。
using (SqlConnection connection = new SqlConnection( "Integrated Security=SSPI;Initial Catalog=Northwind")) { connection.Open(); // Pool A is created. } using (SqlConnection connection = new SqlConnection( "Integrated Security=SSPI;Initial Catalog=pubs")) { connection.Open(); // Pool B is created because the connection strings differ. } using (SqlConnection connection = new SqlConnection( "Integrated Security=SSPI;Initial Catalog=Northwind")) { connection.Open(); // The connection string matches pool A. } |
該官方網頁說:如果集區中的連接已閒置大約 4 到 8 分鐘,或如果共用器偵測到與伺服器的連接已嚴重損毀,則連接共用器會從集區中移除該連接。
根據非官方資料,Pool 的預設值是 100,最小 0,最大 32767,可在連線字串(Connection String) 中使用 max pool size 和 min pool size 進行設定,例如:
"server=(local); integrated security=sspi; database=northwind; max pool size=75; min pool size=5"
一般而言,Pool 會夠用,真不夠用,可以變更設定值,或進行清空
SqlConnection.ClearPool(SqlConnection connection) 清空關聯的連線池
SqlConnection.ClearAllPools() 清空所有連線池
敝人沒找到 SQL Server 每個 Pool 占用的 Memory,根據這篇,MongoDB是10 MB
(完)
相關
SqlConnection.ClearPool(SqlConnection) 方法 (System.Data.SqlClient) | Microsoft Docs
https://docs.microsoft.com/zh-tw/dotnet/api/system.data.sqlclient.sqlconnection.clearpool?view=dotnet-plat-ext-6.0
SqlConnection.ClearAllPools 方法 (System.Data.SqlClient) | Microsoft Docs
https://docs.microsoft.com/zh-tw/dotnet/api/system.data.sqlclient.sqlconnection.clearallpools?view=dotnet-plat-ext-6.0
SqlConnectionStringBuilder.MaxPoolSize 屬性 (System.Data.SqlClient) | Microsoft Docs
https://docs.microsoft.com/zh-tw/dotnet/api/system.data.sqlclient.sqlconnectionstringbuilder.maxpoolsize?view=dotnet-plat-ext-6.0
SQL Connection Pooling 行為觀察-黑暗執行緒
https://blog.darkthread.net/blog/sql-conn-pooling-experiment/
沒有留言:
張貼留言