文章内容

2018/5/4 14:53:27,作 者: 黄兵

Sql Server 连接池机制

数据库只有在首次进行数据库连接比较耗费时间和性能之外,以后的连接时间几乎可以忽略不计,这主要是因为有了数据连接池的原因。


在首次连接时,因为需要解析字符串、授权、检查、和服务器握手等操作,所以相对来讲需要耗费一点时间,但是在首次连接建立之后,这些繁琐的操作便不会再做了,因为有了连接池机制,SqlConnection默认的开启了连接池的功能,也就是说当程序执行SqlConnection.Close()方法后,连接并不会被立即释放到,而是被存到了连接池中,当下一次再有连接请求时,直接从连接池中调出该连接即可。所以在首次连接成功之后的一段时间内,再次对数据库进行连接时,连接过程时不耗费任何连接时间的,但是,如果过了20分钟之后再去进行数据库的连接,这个时候,连接时间又会和首次连接所耗费的时间一样长。这是因为连接池和Season一样都会过期的,超过了一定的时间,就会被收回,一般默认的时间为5-10分钟,如果在此期间没有任何的连接数据库操作,该连接就会被释放。


有没有只需一次连接,变永远的保持连接状态不变的方法呢?事实上,在连接池中有一项设置为最小连接池大小,默认为0,只需将其值设置为大于0 即可永久的保持连接。


示例如下:

Data Source=.; Initial Catalog=Test; Integrated Security=True;Min Pool Size=1

有关多线程访问的问题(通过new SqlConnection()方式访问),如果后一个线程在前一线程关闭之前进行Open()操作,那么此时会创建一个新的物理连接,反之,后一个线程会使用前一个线程的物理连接。但是在实际的运用中,往往会有并发的情况出现,为了尽可能少的创建新的物理连接,我们可以将Min Pool Size的值适当的设的大一些,这样会适当的减轻服务器的压力。


本文转载自:每日学习总结:"已有打开的与此命令相关联的 DataReader,必须首先将它关闭。"、Sql Server 连接池机制

黄兵再次编辑。

分享到:

发表评论

评论列表