自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Ado.net連接池負(fù)載測(cè)試點(diǎn)評(píng)

開(kāi)發(fā) 后端
本文介紹了影響Ado.NET連接池性能的幾個(gè)因素。作者為Ado.NET連接池做了一次簡(jiǎn)單的測(cè)試(VS2008自帶負(fù)載測(cè)試),并展示測(cè)試結(jié)果如下。

對(duì)于Ado.net的連接池有什么作用,相信大家都比較了解了。當(dāng)開(kāi)啟了Ado.net連接池后我們應(yīng)該如何打開(kāi)和關(guān)閉連接才能更好地利用連接池所帶給我們的好處呢?MS提倡我們盡可能每次的在連接使用完成后就關(guān)閉;這樣導(dǎo)致每次都要進(jìn)行打開(kāi)和關(guān)閉操作或用using(){…}寫起代碼比較麻煩,還有經(jīng)常對(duì)池的操作似乎也帶來(lái)一些性能上的問(wèn)題;在Asp.net里一個(gè)WebForm經(jīng)常涉及有N個(gè)數(shù)據(jù)庫(kù)操作,為了方便直接在init里打開(kāi)一個(gè)連接,然后在Dispose里關(guān)閉即省事又能減少對(duì)池的操作提高性能;那到底這樣做能不能提高性能呢?答案是能,但有些情況估計(jì)會(huì)很讓你感覺(jué)到失望…。當(dāng)池的連接數(shù)能應(yīng)付用戶請(qǐng)求的時(shí)候,的確是可以減少池的操作帶來(lái)性能的提升;反之就不一樣了用戶必須等待到獲取連接后才能進(jìn)行其他操作,當(dāng)有更多用戶在等待獲取連接的時(shí)候只能讓線程處于更長(zhǎng)等待時(shí)間導(dǎo)致服務(wù)總體處理能力下降。

以下為Ado.net連接池做一次簡(jiǎn)單的測(cè)試:

測(cè)試方式是使用VS2008自帶的負(fù)載測(cè)試,測(cè)試用戶數(shù)是200,數(shù)據(jù)庫(kù)連接池?cái)?shù)設(shè)置20,測(cè)度時(shí)長(zhǎng)10分鐘。

測(cè)試代碼1:

  1. protected void Page_Load(object sender, EventArgs e)  
  2. {  
  3.             using (System.Data.SqlClient.SqlConnection sqlconn= new  System.Data.SqlClient.SqlConnection("data source=.;initial catalog=northwind;user id=sa;pwd=;Max Pool Size=20"))  
  4.             {  
  5.                 sqlconn.Open();  
  6.                 System.Threading.Thread.Sleep(300);  
  7.             }  
  8.              
  9. }  

測(cè)試代碼2:

  1. protected void Page_Load(object sender, EventArgs e)  
  2.         {  
  3.             using (System.Data.SqlClient.SqlConnection sqlconn = new System.Data.SqlClient.SqlConnection("data source=.;initial catalog=northwind;user id=sa;pwd=;Max Pool Size=20"))  
  4.             {  
  5.                 sqlconn.Open();  
  6.             }  
  7.             System.Threading.Thread.Sleep(50);  
  8.             using (System.Data.SqlClient.SqlConnection sqlconn = new System.Data.SqlClient.SqlConnection("data source=.;initial catalog=northwind;user id=sa;pwd=;Max Pool Size=20"))  
  9.             {  
  10.                 sqlconn.Open();  
  11.             }  
  12.             System.Threading.Thread.Sleep(50);  
  13.             using (System.Data.SqlClient.SqlConnection sqlconn = new System.Data.SqlClient.SqlConnection("data source=.;initial catalog=northwind;user id=sa;pwd=;Max Pool Size=20"))  
  14.             {  
  15.                 sqlconn.Open();  
  16.             }  
  17.             System.Threading.Thread.Sleep(50);  
  18.             using (System.Data.SqlClient.SqlConnection sqlconn = new System.Data.SqlClient.SqlConnection("data source=.;initial catalog=northwind;user id=sa;pwd=;Max Pool Size=20"))  
  19.             {  
  20.                 sqlconn.Open();  
  21.             }  
  22.             System.Threading.Thread.Sleep(50);  
  23.             using (System.Data.SqlClient.SqlConnection sqlconn = new System.Data.SqlClient.SqlConnection("data source=.;initial catalog=northwind;user id=sa;pwd=;Max Pool Size=20"))  
  24.             {  
  25.                 sqlconn.Open();  
  26.             }  
  27.             System.Threading.Thread.Sleep(100);  
  28.         } 

Ado.net連接池測(cè)試結(jié)果1

Ado.net連接池測(cè)試結(jié)果1 

Ado.net連接池測(cè)試結(jié)果2

Ado.net連接池測(cè)試結(jié)果2 

從以上測(cè)試結(jié)果來(lái)看顯然是MS所提倡的方式在某些情況是更好的,因?yàn)殡S著并發(fā)用戶的提高,即用即斷的方式總體上表現(xiàn)效果更佳。還有一點(diǎn)非常重要就是第一種代碼方式會(huì)啟用了池的最大數(shù)據(jù)庫(kù)連接數(shù),而第二種代碼方式只使用了6個(gè)數(shù)據(jù)庫(kù)連接;這一點(diǎn)進(jìn)一步說(shuō)明了,即用即斷在某種情況下更節(jié)省數(shù)據(jù)庫(kù)連接資源。

雖然結(jié)果這樣但不代表是什么情況都使用即用即斷好,當(dāng)池不會(huì)讓用戶在門外等的情況是不需要用的,當(dāng)N個(gè)數(shù)據(jù)庫(kù)操作間沒(méi)其他特別耗時(shí)的運(yùn)算最好就用一個(gè)連接(對(duì)于這個(gè)耗時(shí)多長(zhǎng)就根據(jù)你實(shí)際情況作出權(quán)衡了),對(duì)于什么情況應(yīng)該怎樣做其實(shí)通過(guò)測(cè)試就能找到答案。不過(guò)我個(gè)人推薦還是用MS提倡的:),本人一向都是采用這種方式。

【編輯推薦】

  1. ADO.NET中SQL Server數(shù)據(jù)庫(kù)連接池
  2. ADO.NET中的多數(shù)據(jù)表操作讀取
  3. 淺談ADO.NET中的五個(gè)主要對(duì)象
  4. 使用LINQ和ADO.NET創(chuàng)建Silverlight程序
  5. ADO.NET數(shù)據(jù)庫(kù)連接、操作SQL舉例
責(zé)任編輯:yangsai 來(lái)源: cnBlogs
相關(guān)推薦

2009-11-12 09:25:21

ADO.NET連接池

2009-11-03 16:51:04

ADO.NET連接池觀

2009-12-23 09:01:15

ADO.NET連接池

2009-11-13 13:11:37

ADO.NET連接池

2009-12-23 14:53:28

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-12-23 09:14:52

ADO.NET連接池

2009-12-30 16:22:58

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-12 08:59:18

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

2009-11-03 16:57:34

ADO.NET FAQ

2009-11-12 10:45:45

ADO.NET連接測(cè)試

2009-07-21 11:05:49

關(guān)閉ADO.NET連接

2009-12-30 16:26:12

ADO.NET連接池

2009-11-03 16:04:29

點(diǎn)贊
收藏

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