西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

首頁編程開發(fā)其它知識 → SQL Server的Ado.net連接池

SQL Server的Ado.net連接池

相關軟件相關文章發(fā)表評論 來源:百度搜索時間:2012/11/15 9:48:17字體大。A-A+

作者:西西點擊:0次評論:0次標簽: SQLServer

為什么需要連接池

剖析一個技術第一個要問的是,這項技術為什么存在。

對于每一個到SQL Server的連接,都需要經(jīng)歷TCP/IP協(xié)議的三次握手,身份認證,在SQL Server里建立連接,分配資源等。而當客戶端關閉連接時,客戶端就會和SQL Server終止物理連接。但是,我們做過數(shù)據(jù)庫開發(fā)的人都知道,每次操作完后關閉連接是再正常不過的事了,一個應用程序即使在負載不大的情況下也需要不停的連接SQL Server和關閉連接,同一個應用程序同時也可能存在多個連接。

因此,如果不斷的這樣建立和關閉連接,會是非常浪費資源的做法。因此Ado.net中存在連接池這種機制。在對SQL Server來說的客戶端的應用程序進程中維護連接池。統(tǒng)一管理Ado.net和SQL Server的連接,既連接池保持和SQL Server的連接,當Connection.Open()時,僅僅從連接池中分配一個已經(jīng)和SQL Server建立的連接,當Connection.Close()時,也并不是和SQL Server物理斷開連接,僅僅是將連接進行回收。

因此,連接池總是能維護一定數(shù)量的和SQL Server的連接,以便應用程序反復使用這些連接以減少性能損耗。

重置連接的sys.sp_reset_connection

連接是有上下文的,比如說當前連接有未提交的事務,存在可用的游標,存在對應的臨時表。因此為了便于連接重復使用,使得下一個連接不會收到上一個連接的影響,SQL Server通過sys.sp_reset_connection來清除當前連接的上下文,以便另一個連接繼續(xù)使用。

當在Ado.net中調用了Connection.Close()時,會觸發(fā)sys.sp_reset_connection。這個系統(tǒng)存儲過程大概會做如下事情:

關閉游標

清除臨時對象,比如臨時表

釋放鎖

重置Set選項

重置統(tǒng)計信息

回滾未提交的事務

切換到連接的默認數(shù)據(jù)庫

重置Trace Flag

此外,根據(jù)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,此外,這個方法還會觸發(fā)Audit Login和Audit Logout事件。

本文導航

    相關評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)
    推薦文章

    沒有數(shù)據(jù)