数据库连接池的使用
热线电话的思考:假设不是热线电话,你的号码如果此时正在通话中,别人就无法在此刻打电话过来,会提示占线。
在数据库层面,当有多个客户端需要和数据库建立连接的时候,会使得物理连接不断被建立和关闭,这个连接的过程是非常耗时的,数据库同时建立连接的个数是有限的,
当并发量过大的时候,可能数据库就没法响应了。比如,建立一个物理连接需要0.01s,那如果有10000个客户端需要和数据库同时建立连接,就会出现排队的情况。那如果我们
把这个连接提前预定好呢,有需要连接的时候,直接拿来用,可不可以呢?当然可以,这就涉及到数据库连接池的概念。
理解数据库连接池
数据库连接池默认开启是5个,最大连接数为10个,数据库连接使用完后就会立刻释放给另外的使用,这个连接和释放的时间是很快的,所以虽然只有5,
但是可以应对的并发量其实还是很多的。如果超过了连接池的最大数量,那么数据库会启动物理连接。我们可以通过exec sp_who来查询连接池的数量。
总结:
(1)当使用数据库连接池以后,执行Open()方法,系统会从连接池中提取一个现有的连接出来,这时候打开的是一个逻辑连接,如果数据库中的连接对象都被占用了,则重新建立一个物理连接。
(2)当使用Close()方法关闭连接的时候,系统会把连接对象放回到连接池中,这时候关闭的是一个逻辑连接,如果是独立创建的对象,则会被GC释放掉。
4556