利用session测试ADO.NET连接池性能

开发 后端
文章通过共享一个session的测试证明了ADO.NET连接池性能是相当强大的,大家可以通过文章的代码测试一下。

学习ADO.NET连接池时,你可能会遇到性能问题:一个有近200个子单据的单据,提交时会非常慢,甚至会出现超出最大进程数这样的错误。查看代码,发觉对每个子单据都启动了流程,都要单独获取session与DB交互。查看DB中的session连接数,发觉每提交单据,session都会多达250+...。这里就把我的想法分享给大家。

想法:当时第一感觉就是认为问题应该是在这里,就有了这样的想法:改变每个单据都占用session,而共享一个session来与DB交互,以提高应用的性能。初步设定与DB得交互次数在150左右。想法验证

ADO.NET连接池共享一个session的测试

try  
{  
conn.Open();  
connCount++;  
trans=conn.BeginTransaction();  
for(inti=0;i<50;i++)  
{  
stringrandom=rdm.Next().ToString();  
Insert(string.Format(insertSql1,"姓名"+random),trans);  
Insert(string.Format(insertSql2,"城市"+random),trans);  
Update(string.Format(updateSql,random),trans);  
}  
dt=Query(string.Format(querySql,rdm.Next(1,500)),trans);  
trans.Commit();  
}  
catch(Exceptionex)  
{  
if(null!=trans)  
trans.Rollback();  
Sav2File("TestConnectionWithOneexception:"+ex.Message);  
}  
finally  
{  
if(null!=conn)  
conn.Close();  
 
}  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.

独占一个session的测试(每个方法里包含了获取session和释放session的操作)

for(inti=0;i<50;i++)  
{  
stringrandom=rdm.Next().ToString();  
Insert(string.Format(insertSql1,"姓名"+random));  
Insert(string.Format(insertSql2,"城市"+random));  
Update(string.Format(updateSql,random));  
}  
 
DataTabledt=Query(string.Format(querySql,rdm.Next(1,500)));  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

#T#多次测试的平均结果:独占session的:718.75ms,建立数据库连接次数:151共享session的:781.25ms,建立数据库连接次数:1这个结果确实让我很吃惊,但足以证明了ADO.NET连接池做的是相当出色的。个人认为:共享的慢就慢在了采用了Transaction...。希望通过这个测试会让大家对连接池的性能认识有所提高。

责任编辑:田树 来源: 博客
相关推荐

2009-07-20 14:03:43

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连接池

2009-06-26 14:41:48

ADO.NET

2010-01-04 16:18:13

ADO.NET连接池

2009-11-12 08:59:18

ADO.NET数据库连

2009-11-03 16:57:34

ADO.NET FAQ

2009-11-12 10:45:45

ADO.NET连接测试

2009-12-30 16:26:12

ADO.NET连接池

2009-11-03 16:04:29

2009-07-21 11:05:49

关闭ADO.NET连接
点赞
收藏

51CTO技术栈公众号