首页 > 代码库 > Mysql数据库连接池知识分享
Mysql数据库连接池知识分享
Mysql数据库连接池知识分享
使用优点:
连接池最大的优点是性能。创建一个新的数据库连接是一个耗时耗资源的一个过程。而使用了连接池之后,连接请求可以直接通过连接池来提供而不需要重新连接、认证。这样就节省了时间。
使用缺点:
连接池中可能会存在着多个没有被使用一直连接着的数据库,这意味着资源的浪费。
基本原理:
连接池基本的思想是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户调用数据库操作类MySqlConnection的Open()方法时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,等待下一次调用。而连接的建立、断开是由连接池自身来管理的。同时,还可以设置连接池的一些参数来控制连接池中的初始连接数、连接的上限、下限以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
主要属性说明:
1、连接池启用(pooling=true|false)
表示是否启用连接池,当pooling=true时启用连接池,等于false的时候不启用连接池,默认状态是启用连接池的。
如果启用连接池,当数据库操作类调用Close()方法的时候并不是真正的关闭连接,而是将连接放回连接池中等待下次使用;如果不启用连接池,则当调用Close()方法的时候被调用的数据库连接将被销毁,当再次需要用到连接对象的时候需要重新建立新的连接。
2、超时时间(ConnectionTimeout)
是指连接对象在连接池中拿到连接的最大时间,如果超过该时间,程序将会抛出一个系统异常。ConnectionTimeout=0表示永远不超时。
3、最小连接数(MinimumPoolSize)
是连接池最少保持的数据库连接,如果应用程序对数据库连接的使用量不大,将会有一些的数据库连接资源被浪费。
4、最大连接数(MaximumPoolSize)
是连接池能申请的最大连接数,系统默认的连接数是100,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。
测试过程:
软件:VS2012、Navicat Premium、WampServer
1、测试pooling,最小连接数,最大连接数以及超时
A.启用连接池:将最小连接数设为2,最大连接数设为4,超时时间为5秒
(图1-1)
B.运行连接池测试程序,建立一个连接。如图:
(图1-2)
运行NavicatPremium,建立连接后(过程略),执行showprocesslist命令。发现实际上已经建立了2个连接。结果如下图:(db为example的为我们的测试库)
(图1-3)
由此可见,当设置了最小连接数,即使程序中只建立一个连接,数据库端也会自动建立2个连接。
C.点击第一个连接的“断开连接”按钮。连接状态将会显示为“未连接”;再次执行show processlist命令会发现连接池中依然存在两个连接(图形略)。
说明调用Close方法的时候实际上没有关闭连接,只是将连接放回连接池中。
D.试图建立5个连接,如图:
(图1-4)
(图1-5)
点击第5个连接5秒钟后显示第5个连接失败。由此可见当前连接池只能容纳4个连接,且超时后程序会报出异常。
2、不启用pooling
A.在数据库连接字符串中将pooling改为false
B.运行测试程序,建立一个连接,如图(图1-1),执行showprocesslist命令,结果如图:
(图2-1)
C.点击第一个连接的“断开连接”按钮,再次执行show processlist,结果如下图:
(图2-2)
可见连接是真正的关闭了,并没有保存在连接池中。
Mysql数据库连接池知识分享