当我们在连接SQL Server的时候也会用到连接池,它是默认被打开的只是我们不知道罢了,今天我就来与小伙伴们分享一下我的个人理解以及网上的一些资料。
连接池---什么是连接池呢?我个人理解:其实它就相当于一个临时存放东西的容器,把暂时不用的东西放到这里,当我们需要再次使用它的时候,可以很快很方便的拿出来使用。
连接池在我们Sqlserver驱动级技术上,它可以把我们的连接字符串缓存一下.我们跟数据库连接的时候,需要三次握手.当我们用C#创建了一个数据库连接对象,一旦对它进行了关闭操作.并没有真正的立即将它销毁.它自动进入了连接池.
如果在某个时间内,比如3秒钟内,再次的访问这个数据库.并且连接字符串和刚刚那个连接字符串一模一样.此时就会直接把连接池里面的那个缓存对象拿出来直接使用来完成我们的数据库操作.减少和数据库连接的次数.这样子可以使我们的数据库性能一直保持高性能.当我们使用完连接对象,调用了close方法或者dispose方法,就进入到了连接池.等待一定的时间后,然后进行销毁.在等待时间内,如果有人连接进来,并且连接字符串一样的话,直接就可以使用操作,不需要再三次握手了,否则我在重新创建.
那什么是三次握手呢?其实就是和一个人我三次手嘛,开个玩笑不要当真哈!我来举一个小例子大家可能会清楚一些,小时候我们大家应该玩过游戏(打电话:一个小伙伴叫“大哥”,一个小伙伴叫“小弟”,然后我们自制了一个电话;)叫“大哥”小伙伴在电话的一端喊:“小弟小弟,我是大哥,听到请回答”(很明显这是叫“大哥”的小伙伴肯定有事儿要吩咐给叫“小弟”的小伙伴;这就是第一次握手);当“小弟”听到大哥的喊话以后就会回答:“大哥大哥,我是小弟,收到请讲”(这就是第二次握手);“大哥”听到“小弟”的回答以后就喊:“小弟小弟,我是大哥,我听到你说话了,现在我要你......”(这就是第三次握手)
以这种方式去链接数据库的就会非常的浪费资源,而且速度会很慢,我们为了提高效率所以就引入了连接池:下面是有连接池与没有连接池连接数据时的速度进行对比:
有连接池:
无连接池:
看到了吧,这就是差距呀;所以我们以后在使用数据库的时候,有一个遵循规则.那就是最晚打开对象. 最早关闭对象,并且一定要使用数据库连接池.打开对象和关闭对象.连接对象.Open();中间的代码越少越好,这样子数据库会越来越快.连接对象.Close();
总结的不好,希望各位读者可以提出建议,感谢您的阅读!