在阅读有关数据库连接池属性时,我遇到了以下文本:
maximum pool size
属性指定池维护的最大可用和借用(使用中)连接数。如果借用了最大连接数,则在将连接返回到池之前,将不会有任何连接可用。
此属性允许池中的连接数随着需求的增加而增加。同时,该属性确保池不会增长到exhausting a system's resources,
,最终会影响应用程序的性能和可用性。
我的问题是:当上面的文字谈到'exhausting system resources
'时,这意味着数据库的性能会降低吗?如果答案是肯定的,那么为什么数据库没有最大的连接限制,它可以承受而不会影响性能,而不是依靠应用程序来指定适当的最大连接限制?数据库中是否有任何内容表明它可以支持多少并发连接(比如Oracle / SQL Server?)
答案 0 :(得分:6)
通常,关于“耗尽系统资源”的问题同时适用于应用程序服务器和数据库服务器。您允许的数据库连接越多,在应用程序服务器上运行的并发会话越多,应用程序服务器VM所需的RAM越多,对应用程序服务器和数据库服务器上的CPU的需求就越大,等等。积压工作的队列变得太大,你可能会发现自己花费更多的时间在CPU和调度任务上交换进程而不是做有用的工作。连接池上的最大大小允许您快速错误地处理大量流量或意外性能瓶颈,而不是让用户等待永远不会到来的回复。
数据库通常可以限制它们支持的连接数。例如,Oracle具有PROCESSES
和SESSIONS
参数,并支持多种连接体系结构(专用服务器和共享服务器),以便您可以权衡性能与资源消耗,从而增加数据库可以支持的并发连接数