zoukankan      html  css  js  c++  java
  • ADO.NET数据库连接池的性能测试——出色的DB Pool

    1、问题 

        前几天项目中遇到一个性能问题:一个有近200个子单据的单据,提交时会非常慢,甚至会出现超出最大进程数这样的错误。

    查看代码,发觉对每个子单据都启动了流程,都要单独获取session与DB交互。查看DB中的session连接数,发觉每提交单据,session都会多达250+...

    2、想法

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

    3、想法验证

         共享一个session的测试

    try
                {
                    conn.Open();
                    connCount
    ++;
                    trans 
    = conn.BeginTransaction();
                    
    for (int i = 0; i < 50; i++)
                    {
                        
    string random = 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(Exception ex)
                {
                    
    if (null != trans)
                        trans.Rollback();
                    Sav2File(
    "TestConnectionWithOne exception:" + ex.Message);    
                }
                
    finally
                {
                    
    if (null != conn)
                        conn.Close();

                } 

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

     for (int i = 0; i < 50; i++)

                {
                    
    string random = rdm.Next().ToString();
                    Insert(string.Format(insertSql1,"姓名" + random));
                    Insert(string.Format(insertSql2,"城市" + random));
                    Update(string.Format(updateSql,random));
                }

                DataTable dt = Query(string.Format(querySql,rdm.Next(1,500)));

    多次测试的平均结果: 

    独占session的:718.75 ms,建立数据库连接次数: 151

    共享session的:781.25 ms,建立数据库连接次数: 1 

     这个结果确实让我很吃惊,但足以证明了ADO.NET的数据库连接池做的是相当出色的。

    个人认为:共享的慢就慢在了采用了Transaction... 

  • 相关阅读:
    word转HTML并使用于浏览器界面
    配置wampserver出现服务器错误问题
    SVN使用及配置pycharm、本地Linux虚拟机教程
    加载本地json文件,调试出现 Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.解决方法
    转载:有关Html中<a>、<link>和<script>标签中相对路径与绝对路径的问题总结
    asp.net 登出设置
    Maven依赖中的scope详解
    什么情况下用resultType和 resultMap
    修改tomcat默认端口号8080
    SpringMVC
  • 原文地址:https://www.cnblogs.com/FallingAutumn/p/1593151.html
Copyright © 2011-2022 走看看