我在阅读有关数据库连接池属性的文章时遇到了以下文本:
maximum pool size
属性指定池维护的可用和借用(使用中)连接的最大数量。如果借用了最大连接数,则在将连接返回到池之前,将没有可用连接。
此属性允许池中的连接数随着需求的增加而增加。同时,该属性确保池不会增长到耗尽系统资源
的程度,这最终会影响应用程序的性能和可用性。
我的问题是:当上面的文字谈到“耗尽系统资源
”时,这是否意味着数据库性能下降?如果答案是肯定的,为什么数据库没有在不影响性能的情况下可以承受的最大连接限制,而不是依赖应用程序指定适当的最大连接限制?数据库中是否有任何内容表明它可以支持多少并发连接(比如 Oracle/SQL Server?)
最佳答案
一般来说,对“耗尽系统资源”的担忧适用于应用服务器和数据库服务器。您允许的数据库连接越多,应用服务器上运行的并发 session 越多,应用服务器 VM 需要的 RAM 越多,对应用服务器和数据库服务器等 CPU 的需求就越大。如果积压工作的队列变得太大,您可能会发现自己花费更多时间在 CPU 上和下交换进程以及调度任务而不是做有用的工作。连接池的最大大小允许您通过快速出错而不是让用户超时等待永远不会到来的回复,从而稍微更优雅地处理大量流量或意外的性能瓶颈。
一般来说,数据库确实能够限制它们支持的连接数。例如,Oracle 具有 PROCESSES
和 SESSIONS
参数,并支持多种连接架构(专用服务器和共享服务器),让您可以在性能与资源消耗之间进行权衡,以增加数据库可以支持的并发连接数。
关于sql-server - 最大连接池大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5793960/