如何实现功能 i.s.在建立与 SQL 的连接时控制“Incr Pool Size”或“Decr Pool Size”?类似于甲骨文
Posted
技术标签:
【中文标题】如何实现功能 i.s.在建立与 SQL 的连接时控制“Incr Pool Size”或“Decr Pool Size”?类似于甲骨文【英文标题】:How to achieve functionlity i.e. controlling "Incr Pool Size" or "Decr Pool Size" while establishing connection to SQL? similar to ORACLE 【发布时间】:2012-07-11 09:27:26 【问题描述】:我问了一个关于“Incr Pool Size”或“Decr Pool Size”的问题
How to resolve SqlConnection error "Keyword not supported: 'decr pool size'."
这是另一个与此相关但不同的问题,简而言之,ORACLE 连接字符串提供了这两个选项来分别在连接池为空或已满时增加/减少连接对象。我们如何使用 SQL 来实现这一点。
编辑:为什么我想知道,因为我正在创建一个中间件,我正在使用多个并行线程(例如 60)写入数据库,我在想的是当我来自池的所有连接(例如 50)都在使用中并且新的一堆线程尝试创建连接,sql server 将在池中创建另一束连接,即 50 还是会一个一个地创建这个超出的连接?
【问题讨论】:
【参考方案1】:SqlClient 通过提供的MaxPoolSize
和MinPoolSize
参数自动管理池大小。默认值分别为 100 和 0。
【讨论】:
它是如何管理的?假设如果所有连接都被占用,将创建多少个新连接? 您应该简单地将MaxPoolSize
设置为足够大的值。您的中间件应该限制请求(如果您的代码作为 Web 服务托管或在 ASP.Net 中运行,IIS 已经为您执行此操作)。每个客户端驱动程序如何处理新连接请求的爆发因驱动程序而异。 SqlClient 驱动程序不提供控制。
为具有 incr decr 大小的连接池编写自定义类会有所帮助吗?
没有。当您用完连接并且池没有增加其大小时,您是否有实际用例?您是在尝试解决真正的问题还是只是在猜测?
不,我没有遇到任何问题,我唯一关心的是从连接池中获得最佳效果或节省创建一个连接和一堆连接之间的时间差以上是关于如何实现功能 i.s.在建立与 SQL 的连接时控制“Incr Pool Size”或“Decr Pool Size”?类似于甲骨文的主要内容,如果未能解决你的问题,请参考以下文章
如何仅在一只耳朵中播放声音 i.s.使用音频单元一次向左或向右