【问题标题】:How to limit Postgresql jdbc pool connections amount?如何限制 Postgresql jdbc 池连接量?
【发布时间】:2018-04-30 06:47:53
【问题描述】:

PostgreSQL JDBC 为连接池提供了几个类。仅推荐使用PGConnectionPoolDataSource。使用此类,如果接收到的连接繁忙,则库会创建另一个。

PGPoolingDataSource(调用setMaxConnections)正在等待某个连接空闲(如果它们都忙),这就是我想要的。但是这个类被标记为@Deprecated

在源代码中,我看到它使用PGPooledConnection,那些使用BaseDataSource,并且没有提及任何限制。

有没有正确的方法来限制池连接?

【问题讨论】:

    标签: postgresql jdbc connection limit pool


    【解决方案1】:

    您应该使用第三方连接池库,例如 HikariCPDBCP,或者您的应用程序服务器中包含的连接池库(如果有)。

    这也是PGPoolingDataSource 的弃用说明中的文档(请参阅source on GitHub):

    从 42.0.0 开始,您应该使用全功能的而不是此类 HikariCP、vibur-dbcp、commons-dbcp、c3p0等连接池

    PGConnectionPoolDataSource 类没有实现连接池,它旨在连接池用作连接工厂。

    【讨论】:

    • 那是可悲的。希望有一天池化成为 JDBC 的一部分!
    • @Dmitry JDBC是一个API和规范,它永远不会自己提供池化。你需要使用提供JDBC的第三方库DataSource的原因很简单:很难做连接汇集正确和高性能。许多 JDBC 驱动程序最初都有自己的连接池实现,但大多数(曾经)要么有问题,要么性能不佳(或两者兼而有之)。市场产生了更好的替代品。
    猜你喜欢
    • 1970-01-01
    • 2013-10-12
    • 2016-07-06
    • 2015-02-25
    • 2016-07-14
    • 2012-09-18
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多