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

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

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

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

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

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

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

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

#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-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-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-03 16:57:34

ADO.NET FAQ

2009-11-12 08:59:18

ADO.NET数据库连

2009-07-21 11:05:49

关闭ADO.NET连接

2009-12-30 16:26:12

ADO.NET连接池

2009-11-03 16:04:29

2009-11-12 10:45:45

ADO.NET连接测试
点赞
收藏

51CTO技术栈公众号