成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

五分鐘讓你全面理解ADO.NET連接池

開(kāi)發(fā) 后端
這里介紹ADO.NET連接池是Data Provider提供的一個(gè)機(jī)制,使得應(yīng)用程序使用的連接保存在連接池里而避免每次都要完成建立/關(guān)閉連接的完整過(guò)程。

知道現(xiàn)在編程什么是最寶貴的?數(shù)據(jù)庫(kù)連接,它其實(shí)是很耗費(fèi)資源的。這里我們就連接池這個(gè)問(wèn)題我們來(lái)一起討論討論吧。數(shù)據(jù)庫(kù)連接池是為了更有效地利用數(shù)據(jù)庫(kù)連接的最重要措施。它對(duì)于一個(gè)大型的應(yīng)用系統(tǒng)的性能至關(guān)重要,特別是Web應(yīng)用。ADO.NET Data Provider(以下簡(jiǎn)稱Data Provider)會(huì)幫我們管理連接池,所以有人說(shuō)使用連接池就像游兒童池一樣輕松。但并不是說(shuō)有了Data Provider程序員就萬(wàn)事無(wú)憂的,不正確地使用連接池可能導(dǎo)致你的應(yīng)用在池里淹死。

什么是ADO.NET連接池?

ADO.NET連接池是Data Provider提供的一個(gè)機(jī)制,使得應(yīng)用程序使用的連接保存在連接池里而避免每次都要完成建立/關(guān)閉連接的完整過(guò)程。要理解連接池,先要理解程序里SqlConnection.Open()、SqlConnection.Close()和打開(kāi)/關(guān)閉一個(gè)“物理連接”的關(guān)系。

Data Provider在收到連接請(qǐng)求時(shí)建立連接的完整過(guò)程是:先連接池里建立新的連接(即“邏輯連接”),然后建立該“邏輯連接”對(duì)應(yīng)的“物理連接”。建立“邏輯連接”一定伴隨著建立“物理連接”。Data Provider關(guān)閉一個(gè)連接的完整過(guò)程是先關(guān)閉“邏輯連接”對(duì)應(yīng)的“物理連接”然后銷毀“邏輯連接”。銷毀“邏輯連接”一定伴隨著關(guān)閉“物理連接”。SqlConnection.Open()是向Data Provider請(qǐng)求一個(gè)連接,Data Provider不一定需要完成建立連接的完整過(guò)程,可能只需要從連接池里取出一個(gè)可用的連接就可以;SqlConnection.Close()是請(qǐng)求關(guān)閉一個(gè)連接,Data Provider不一定需要完成關(guān)閉連接的完整過(guò)程,可能只需要把連接釋放回連接池就可以。

下面以一個(gè)例子來(lái)說(shuō)明。本文例子都使用Console Application。我們使用操作系統(tǒng)的性能監(jiān)視器來(lái)比較使用連接池與否,數(shù)據(jù)庫(kù)的“物理連接”數(shù)量的不同。因?yàn)樾阅鼙O(jiān)視器至少每一秒采集一次數(shù)據(jù),為方便觀察效果,代碼中Open和Close連接后都Sleep一秒。

  1. SqlConnection con = new SqlConnection("server = .;  
  2. database = northwind;pooling = false;trusted_connection = true");  
  3. for(int i = 0;i < 10;i++)  
  4. {  
  5. try  
  6. {  
  7. con.Open();  
  8. System.Threading.Thread.Sleep(1000);  
  9. }  
  10. catch(Exception e){Console.WriteLine(e.Message);}  
  11. finally  
  12. {  
  13. con.Close();  
  14. System.Threading.Thread.Sleep(1000);  
  15. }  

首先,不使用ADO.NET連接池做測(cè)試。以上程序中pooing = false表示不使用連接池,程序使用同一個(gè)連接串Open & Close了10次連接,使用性能計(jì)數(shù)器觀察SQL Server的“物理連接”數(shù)量。從下面的鋸齒圖可以看出每執(zhí)行一次con.Open(),SQLServer的“物理連接”數(shù)量都增加一,而每執(zhí)行一次con.Close(),SQLServer的“物理連接”數(shù)量都減少一。由于不使用連接池,每次Close連接的時(shí)候Data Provider需要把“邏輯連接”和“物理連接”都銷毀了,每次Open連接的時(shí)候Data Provider需要 建立“邏輯連接”和“物理連接”,鋸齒圖因此而成。

鋸齒圖


下面啟用連接池再測(cè)試一次。把連接串的pooling參數(shù)改為true,另外在for循環(huán)后加上Console.Read()。

從下圖可以看出,從***次Open到第執(zhí)行完Console.Read()這段時(shí)間內(nèi),SQL Server的“物理連接”數(shù)量一直保持為1,直到關(guān)閉console應(yīng)用程序的進(jìn)程后SQL Server的“物理連接”數(shù)量才變?yōu)?。由于使用了連接池,每次Close連接的時(shí)候Data Provider只需把“邏輯連接”釋放回連接池,對(duì)應(yīng)的“物理連接”則保持打開(kāi)的狀態(tài)。每次Open連接的時(shí)候,Data Provider只需從連接池取出一個(gè)“邏輯連接”,這樣就可以使用其對(duì)應(yīng)“物理連接”而不需建立新的“物理連接”,直線圖因此而成。

直線圖

【編輯推薦】

  1. LINQ to SQL查詢分析
  2. LINQ查詢架構(gòu)簡(jiǎn)單介紹
  3. LINQ to SQL映射關(guān)系概述
  4. LINQ To SQL對(duì)象模型淺析
  5. LINQ to SQL映射列描述
<
責(zé)任編輯:田樹(shù) 來(lái)源: 博客
相關(guān)推薦

2009-11-04 17:18:34

ADO.NET連接池

2009-11-04 16:13:18

ADO.NET數(shù)據(jù)表

2009-11-11 13:46:41

ADO.NET異步查詢

2009-11-03 16:51:04

ADO.NET連接池觀

2009-11-13 13:11:37

ADO.NET連接池

2009-12-23 09:01:15

ADO.NET連接池

2009-12-23 14:53:28

ADO.NET連接池

2009-11-12 09:25:21

ADO.NET連接池

2009-11-11 14:04:14

ADO.NET連接池

2010-01-05 10:11:23

ADO.NET連接池

2009-11-03 15:58:22

2010-02-25 09:06:40

ADO.NET連接池

2009-11-12 09:16:15

ADO.NET數(shù)據(jù)庫(kù)連

2009-12-23 09:14:52

ADO.NET連接池

2009-12-30 16:22:58

ADO.NET連接池

2009-07-20 14:03:43

Ado.net連接池

2009-12-24 09:49:02

ADO.Net連接池

2010-01-04 16:18:13

ADO.NET連接池

2009-06-26 14:41:48

ADO.NET

2009-11-03 16:57:34

ADO.NET FAQ
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成人中文字幕av | av免费成人| 九九在线视频 | 中文字幕久久久 | 日韩精品一区二区三区久久 | 午夜男人天堂 | 皇色视频在线 | 亚洲网视频 | 天天干天天插天天 | 黄色网页在线 | 亚洲综合热 | 亚洲一区二区电影网 | 成人精品久久日伦片大全免费 | 欧美日批 | 亚洲成人网在线 | 成人免费看黄网站在线观看 | 中文视频在线 | 久久精品国产一区 | 这里只有精品99re | 一区二区三区四区国产 | 亚洲激情在线视频 | 精品日韩一区 | 国内毛片毛片毛片毛片 | 精品一级毛片 | 精品一区二区三区四区 | 玖玖玖av| 欧美三区 | 国产精品大片 | 一级片av | 成人久久18免费网站麻豆 | 韩三级在线观看 | 欧美激情精品久久久久久变态 | 秋霞在线一区二区 | 毛片一区二区三区 | 福利片一区二区 | 日韩成人av在线 | 亚洲成人精品久久久 | 国产精品大片 | 久久爱综合 | 久久骚| 午夜精品|