数据库连接池和Tomcat连接池的配置有关问题

数据库连接池和Tomcat连接池的配置问题

          在做系统优化的时候师哥给我们提了一个连接池的概念,问我们有没有配置,我对这个概念一无所知,于是进行了一些研究,连接池有很多,比如WCF、EF还有数据库、CAS也可以配连接池,这些连接池用通俗的语言来说就是一个池子,池子里的资源可以收放自如,不用的时候可以立即收回,和我们通常用到USing的作用有些相似,就是可以自动的释放connection资源。

        数据库中连接池的配置如下:        

<span style="font-size:14px;">  </span><strong><span style="font-size:18px;">  stringconStr ="server=127.0.0.1.;uid=sa;pwd=tcaccp;database=pubs;pooling=true;min pool size=5;max pool size=10".</span></strong>
        其中 pooling 表示是否打开连接池,默认为打开,关掉时需要 pooling = false;
        min pool size 表示连接池最少保存几个连接对象;
       max pool size 表示连接池最多保存几个连接对象。(最大值不能为 0,也不能小于最小值);
      最大连接数表示同时刻最多允许的访问的数量,可以起到保护站点的作用;最小表示即使没有访问也会打开几个连接。

       下面是段关于using的代码:       

 using (SqlBulkCopy sqlBC = new SqlBulkCopy(sqlConn))  
              {              
                  //設定 NotifyAfter 属性,以便在每插入10000 条数据时,呼叫相应事件。   
                 
  
                  //设置要批量写入的表  
                  sqlBC.DestinationTableName = tableName;  
  
                  //自定义的datatable和数据库的字段进行对应  
                  //sqlBC.ColumnMappings.Add("id", "tel");  
                  //sqlBC.ColumnMappings.Add("name", "neirong");  
                  for (int i = 0; i < dtColum.Count; i++)  
                  {  
                      sqlBC.ColumnMappings.Add(dtColum[i].ColumnName.ToString(), dtColum[i].ColumnName.ToString());  
                  }  
                  //批量写入  
                  sqlBC.WriteToServer(dt);  
              }  
          这里用了using,自动关闭连接,不光能导入命名空间,还能在程序体内,局部使用某个对象。像上边代码,sqlCon 的作用域只有 using 对应的大括弧这么大。更神奇的是,using 可以在对象作用域结束时,自动调用 sqlCon.Dispose()将对象释放,所以以上代码中,没有 sqlCon.Close() 和 sqlCon.Dispose(),同样可以释放资源,放回连接池。

             上面说的是关于数据库连接池的一些配置,下面说下Tomcat连接池的配置,因为在用单点登录的时候需要将服务端搭到Tomcat中,而我们在测试的时候发现登录很慢,于是我也搜了一些关于Tomcat连接池的配置:

              1.所有的tomcat项目共用一个连接池配置:在tomcat6->conf->context.xml文件中,在<context></context>之间添加      

<Context> 
  <Resource  name="jdbc/mengshan"  
            auth="Container"  
        type="javax.sql.DataSource"  
            maxActive="20"  
            maxIdel="10"
            maxWait="1000"  
            username="root"  
            password=""  
    driverClassName="com.mysql.jdbc.Driver"  
    url="jdbc:mysql://127.0.0.1:3306/test"  
        >  
</Resource>  
</Context> 
      然后 web.xml中的<web-app></web-app>添加:

      

<resource-ref> 
      <res-ref-name>jdbc/mengshan </res-ref-name> 
      <res-type>javax.sql.DataSource </res-type> 
      <res-auth>Container</res-auth> 
    </resource-ref> 
      这些连接池配置的原理其实是一样的,只是放到了不用的情景下。希望和大家交流!

          

版权声明:本文为博主原创文章,未经博主允许不得转载。