使用连接池提高应用程序性能

 

连接池在哪里?

连接池是一种客户端技术.

客户端意味着连接池位于执行 DbConnection 对象 Open 语句的计算机上.

创建和打开连接池

连接池的使用体现在连接字符串中.

如:
            SqlConnectionStringBuilder connbuilder = new SqlConnectionStringBuilder();
            connbuilder.DataSource = "localhost";
            connbuilder.UserID = "user";
            connbuilder.Password = "password";
            connbuilder.Pooling = true;
            connbuilder.ConnectTimeout = 10;
            connbuilder.MinPoolSize = 5;
            connbuilder.MaxPoolSize = 20;
            SqlConnection conn = new SqlConnection(connbuilder.ConnectionString);
            conn.Open();

影响连接池的参数

bool Pooling 如果设置为true,则请求从连接池返回连接,默认为true。
int MinPoolSize 连接池的最小连接数,默认为 0 。在应用程序即使长时间处于未激活状态,仍然要求它
                能稳定快速地进行响应,一般将这个值设为一个较小的值,比如 5 。
int MaxPoolSize 连接池的最大连接数,默认为100。
int ConnectTimeout 连接超时,默认为15秒。

何时创建连接池

在实例化第一个连接时会创建一个连接池组对象,它是一个管理连接池的对象。
但只有打开第一个连接时才会创建第一个连接池。

连接在连接池中生存的时间是多少

在需要使用连接时,会从连接池中提取一个可用连接,在使用完毕后,会将连接返回给连接池中的可用连接列表。
在一个连接返回连接池后,它的生存时间为 4 到8 分钟(一个随机的时间)。连接池不会无限期地保存空闲的连接。

使用 using 语句防止连接泄漏造成超出连接池容量

using 块将自动调用 Dispose 方法。
如:
            SqlConnectionStringBuilder connbuilder = new SqlConnectionStringBuilder();
            connbuilder.DataSource = "localhost";
            connbuilder.UserID = "user";
            connbuilder.Password = "password";
            using(SqlConnection conn = new SqlConnection(connbuilder.ConnectionString))
            {
                 conn.Open();
                 using(SqlCommand cmd = conn.CreateCommand())
                 {
                      cmd.CommandText = "";
                      cmd.ExecuteNonQuery();
                 }
            }

posted on 2008-10-22 19:15  李炜  阅读(389)  评论(0编辑  收藏  举报

导航