新聞中心
ADO.NET連接池是Data Provider提供的一個機(jī)制,使得應(yīng)用程序使用的連接保存在連接池里而避免每次都要完成建立/關(guān)閉連接的完整過程。要理解連接池,首先要了解程序里“物理連接”的關(guān)系。

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),向陽企業(yè)網(wǎng)站建設(shè),向陽品牌網(wǎng)站建設(shè),網(wǎng)站定制,向陽網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,向陽網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
Data Provider在收到連接請求時建立連接的完整過程是:先連接池里建立新的連接(即“邏輯連接”),然后建立該“邏輯連接”對應(yīng)的“物理連接”。建立“邏輯連接”一定伴隨著建立“物理連接”。
Data Provider關(guān)閉一個連接的完整過程是先關(guān)閉“邏輯連接”對應(yīng)的“物理連接”然后銷毀“邏輯連接”。銷毀“邏輯連接”一定伴隨著關(guān)閉“物理連接”。SqlConnection.Open()是向Data Provider請求一個連接,Data Provider不一定需要完成建立連接的完整過程。#t#
可能只需要從連接池里取出一個可用的連接就可以;SqlConnection.Close()是請求關(guān)閉一個連接,Data Provider不一定需要完成關(guān)閉連接的完整過程,可能只需要把連接釋放回連接池就可以。
下面以一個例子來說明。本文例子都使用Console Application。我們使用操作系統(tǒng)的性能監(jiān)視器來比較使用連接池與否,數(shù)據(jù)庫的“物理連接”數(shù)量的不同。因為性能監(jiān)視器至少每一秒采集一次數(shù)據(jù),為方便觀察效果,代碼中Open和Close連接后都Sleep一秒。
- SqlConnection con = new SqlConnection("server = .;
- database = northwind;pooling = false;trusted_connection = true");
- for(int i = 0;i < 10;i++) { try { con.Open(); System.Threading.Thread.Sleep(1000);
- }
- catch(Exception e){Console.WriteLine(e.Message);} finally { con.Close(); System.Threading.Thread.Sleep(1000); }
- }
首先,不使用ADO.NET連接池做測試。以上程序中pooing = false表示不使用連接池,程序使用同一個連接串Open & Close了10次連接,使用性能計數(shù)器觀察SQL Server的“物理連接”數(shù)量。
從下面的鋸齒圖可以看出每執(zhí)行一次con.Open(),SQLServer的“ADO.NET連接池”數(shù)量都增加一,而每執(zhí)行一次con.Close(),SQLServer的“物理連接”數(shù)量都減少一。由于不使用連接池,每次Close連接的時候Data Provider需要把“邏輯連接”和“物理連接”都銷毀了,每次Open連接的時候Data Provider需要 建立“邏輯連接”和“物理連接”,鋸齒圖因此而成。
標(biāo)題名稱:漫談ADO.NET連接池相關(guān)注意問題說明
網(wǎng)頁網(wǎng)址:http://www.5511xx.com/article/dhdhjoj.html


咨詢
建站咨詢
