当前位置: 移动技术网 > IT编程>开发语言>.net > ADO.NET之连接池技术的使用详解

ADO.NET之连接池技术的使用详解

2017年12月12日  | 移动技术网IT编程  | 我要评论
连接到数据库服务器通常需要一定的时间,且服务器也需要一定的资源来处理连接。web应用程序有时处理成千上万的连接,需要相当多的资源来处理连接。ado.net具有连接池的特性,

连接到数据库服务器通常需要一定的时间,且服务器也需要一定的资源来处理连接。web应用程序有时处理成千上万的连接,需要相当多的资源来处理连接。ado.net具有连接池的特性,连接池的功能是保留一定数量的连接,当用户使用相同的连接字符串再次连接服务器时,aso.net将使用连接池中的连接而不用重新发起一次连接过程。当调用close方法关闭连接时,ado.net将使用连接池中的连接而不用重新发起一次连接过程。当调用close方法关闭连接时,连接将会返回到连接池中,下次再次调用open方法时,将从连接池中取出一个连接使用。

数据库连接字符串默认为启用连接池。使用连接池可以在连接字符串中用pooling=true/false来控制,设置连接池最大值和最小值可以使用max pool size=200;min pool size=1; 进行控制。

下边新建一个控制台应用程序来演示连接池的使用,其实我们仅仅是在connection string中使用pooling=false/true来控制,默认是使用连接池技术的,也就是pooling=true:

复制代码 代码如下:

using system;
using system.collections.generic;
using system.linq;
using system.text;
using system.data.sqlclient;
using system.threading;

namespace consoleapplication1
{
    class program
    {
        private static readonly string connectionstring1 = @"data source=.;initial catalog=northwind;integrated security=true;pooling=true;";//默认值即为true,所以可省略pooling=true
        private static readonly string connectionstring2 = @"data source=.;initial catalog=northwind;integrated security=true;pooling=false;";
        static void main(string[] args)
        {
            long startticks1 = datetime.now.ticks;
            using (sqlconnection conn1 = new sqlconnection(connectionstring1))
            {
                for (int i = 0; i < 100; i++)
                {
                    conn1.open();
                    conn1.close();
                }
            }
            long endticks1 = datetime.now.ticks;
            long usedticks1 = endticks1 - startticks1;
            console.writeline("used time: " + usedticks1);

            long startticks2 = datetime.now.ticks;
            using (sqlconnection conn2 = new sqlconnection(connectionstring2))
            {
                for (int i = 0; i < 100; i++)
                {
                    conn2.open();
                    conn2.close();
                }
            }
            long endticks2 = datetime.now.ticks;
            long usedticks2 = endticks2 - startticks2;
            console.writeline("used time: " + usedticks2);

        }

 

    }

}


输出结果:
复制代码 代码如下:

pooling=true: 710040
pooling=false: 3100177

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网