SQL Server连接池基本原理

  SQL Server连接池基本原理

SQL Server连接池基本原理



1.     何时创建连接池? 


当第一个连接请求到来时创建连接池;连接池的建立由数据库连接的连接字符创来决定。每一个连接池都与一个不同的连接字符串相关。当一个新的连接请求到来时如果连接字符串和连接池使用的字符串相同,就从连接池取出一个连接;如果不相同,就新建一个连接池。 


2.     何时关闭连接池? 


当连接池中的所有连接都已经关闭时关闭连接池。 


3.     当连接池中的连接都已经用完,而有新的连接请求到来时会发生什么? 


当连接池已经达到它的最大连接数目时,有新的连接请求到来时,新的连接请求将放置到连接队列中。当有连接释放给连接池时,连接池将新释放的连接分配给在队列中排队的连接请求。你可以调用close和dispose将连接归还给连接池。 


4.     我应该如何允许连接池? 


对于应用程序而言,默认为允许连接池。(这意味着你可以不必为这件事情做任何的事情)当然,如果你可以在SQLConnection对象的连接字符串中加进Pooling=true;确保你的应用程序允许连接池的使用。
SqlConnection的连接池



前段时间尝试连接数据库,然后调用sqlConnection.Close(), 最后试图删除该数据库,结果提示数据库正在使用,查看数据库进程情况,发现是自己在用该数据库,突然想到.Net支持连接池技术。sqlConnection.Close()和sqlConnection.Dispose()并不会关掉数据库的物理连接(SQL连接池中的连接,只是设为sleeping状态)。查看MSDN,结论如下: 

当连接打开时,将根据一种精确的匹配算法来创建连接池,该算法会使连接池与连接中的字符串相关联。每个连接池都与一个不同的连接字符串相关联。当新连接打开时,如果连接字符串不精确匹配现有池,则将创建一个新池。 

连接池是为每个唯一的连接字符串创建的。当创建一个池后,将创建多个连接对象并将其添加到该池中,以满足最小池大小的要求。连接将根据需要添加到池中,直至达到最大池大小。对 Connection 调用 Close 或 Dispose 时,连接被释放回池中,而跟数据库的物理连接并没有断掉。连接池一旦创建,直到活动进程终止时才会被毁坏。非活动或空池的维护只需要最少的系统开销。 

连接字符串中,有Pooling这个关键字,默认情况下,其值为true,即支持连接池技术。如果不想支持连接池技术,可以显式地将其赋值为false.另外Max Pool Size, Min Pool Size为池允许的最大和最小连接数。





建议大家:


1、能够将使用后的连接及时关闭(Close,Dispose),这样有效的减小了无用的连接,同时也避免了以上的情况.

2、避免无权限的用户登录上来误操作的发生.

3、相同数据库的连接字符串保持一致,比如ConnectionString中分号隔开的参数顺序不一样,或者多余的空格。




C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务

版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
发表评论

评论内容
昵称:
关联文章

SQL Server连接基本原理
SQL连接字符串设置连接
使用T-SQL语句配置SQL Server连接允许的并发用户连接的最大数目
SQL连接完整测试报告
运行开发框架SQL连接变动情况测试报告
C/S框架后台数据更新模型之ORM自动生成SQL基本原理
SQLServer连接字符串连接详解,Pooling=True/False区别
SQL注入攻击的原理及其防范措施
超时时间已到,但是尚未从中获取连接。出现这种情况可能是因为所有连接均在使用,并且达到了最大大小
实现WCF连接管理器
SQL Server 存储过程详解
Winform快速开发框架之权限系统设计(3) - 功能按钮权限控制基本原理
SQL管理器连接服务器实例失败
SQL配置链接服务器脚本(SQL Link Server Script)
SQL Server应用程序中的高级SQL注入
SQL2008用户请注意修改连接字符串
SQL连接管理器增加功能: 后台连接模式配置
使用WCF连接有效解决访问IIS承载的WCF出现SendTimeOut连接超时或IIS死机的问题
SQL Server 判断是否存在数据库,表,列,视图
异步实现Socket Server&Client