ADO.NET數據連接池剖析建站知識
導讀:建站知識本篇文章起源于在GCR MVP Open Day的時候和C# MVP討論連接池的概念而來的。因此單獨寫一篇文章剖析一下連接池高端網站建設seo網站優化。
本篇文章起源于在GCR MVP Open Day的時候和C# MVP張響討論連接池的概念而來的。因此單獨寫一篇文章剖析一下連接池。 為什么需要連接池 剖析一個技術第一個要問的是,這項技術為什么存在。 對于每一個到SQL Server的連接,都需要經歷TCP/IP協議的三次握手,身份認證,在SQL Server里建立連接,分配資源等。而當客戶端關閉連接時,客戶端就會和SQL Server終止物理連接。但是,我們做過數據庫開發的人都知道,每次操作完后關閉連接是再正常不過的事了,一個應用程序即使在負載不大的情況下也需要不停的連接SQL Server和關閉連接,同一個應用程序同時也可能存在多個連接。 因此,如果不斷的這樣建立和關閉連接,會是非常浪費資源的做法。因此Ado.net中存在連接池這種機制。在對SQL Server來說的客戶端的應用程序進程中維護連接池。統一管理Ado.net和SQL Server的連接,既連接池保持和SQL Server的連接,當Connection.Open()時,僅僅從連接池中分配一個已經和SQL Server建立的連接,當Connection.Close()時,也并不是和SQL Server物理斷開連接,僅僅是將連接進行回收。 因此,連接池總是能維護一定數量的和SQL Server的連接,以便應用程序反復使用這些連接以減少性能損耗。重置連接的sys.sp_reset_connection 連接是有上下文的,比如說當前連接有未提交的事務,存在可用的游標,存在對應的臨時表。因此為了便于連接重復使用,使得下一個連接不會收到上一個連接的影響,SQL Server通過sys.sp_reset_c公司網站建設onnection來清除當前連接的上下文,以便另一個連接繼續使用。當在Ado.net中調用了Connection.Close()時,會觸發sys.sp_reset_connection。這個系統存儲過程大概會做如下事情: 關閉游標 清除臨時對象,比如臨時表 釋放鎖 重置Set選項 重置統計信息 回滾未提交的事務 切換到連接的默認數據庫 重置Trace Flag 此外,根據BOL上的信息:
復制代碼 代碼如下:
"The sp_reset_connection stored procedure is used by SQL Server to support remote stored procedure calls in a transaction. This stored procedure also causes Audit Login and Audit Logout events to fire when a connection is reused from a connection pool."
可以知道不能顯式的在SQL Server中調用sys.sp_reset_connection,此外,這個方法還會觸發Audit Login和Audit Logout事件。一個簡單的示例 下面我們通過一個簡單的示例來看連接池的使用: 首先我分別使用四個連接,其中第一個和第二個連接之間有10秒的等待時間:復制代碼 代碼如下:
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-24 ,文章ADO.NET數據連接池剖析建站知識主要講述標簽,標題,ADO.NET數據連接池剖析建站知識1網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_6603.html