【问题标题】:How does Postgres handle more requests than connectionsPostgres 如何处理比连接更多的请求
【发布时间】:2021-12-17 13:29:24
【问题描述】:

在浏览 Postgres 架构时,提到的一件事是 Postgres DB 的连接限制为 500(可以修改)。要从 Postgres DB 中获取任何数据,我们首先需要建立一个连接。那么在这种情况下,如果同时有 10k 个请求进入数据库会发生什么?请求如何映射到连接限制,因为我们有 500 个限制。我们需要增加限制还是需要创建更多 Postgres 实例或并发?

【问题讨论】:

    标签: python-3.x postgresql psycopg2


    【解决方案1】:

    如果在单个数据库上运行 10000 条并发语句,任何硬件都会过载。你就是不能那样做。

    即使是 500 个并发请求也太多了,因此对于 max_connections(或者准确地说是并发活动会话的数量)来说,这个值太高了。

    好处是您不必这样做。您使用连接池作为应用程序和数据库之间的代理。如果您的数据库语句足够短,您可以轻松地处理具有几十个数据库连接的数千个并发应用程序用户。这样可以防止数据库过载并避免频繁打开数据库连接,这很昂贵。

    如果您尝试打开的数据库连接数超过max_connections 允许的数量,您将收到一条错误消息。如果从池中请求数据库连接的进程多于限制允许的数量,则某些会话将挂起并等待连接可用。使用连接池的另一点!

    【讨论】:

    • 感谢您回答这个问题。正如您所说,几十个数据库连接可以处理数千个并发应用程序用户,考虑到数据库查询语句是否很短并且保持不变每个请求
    • 将核心数除以数据库事务的平均持续时间,然后您就可以估算出每秒可以处理的事务数。
    猜你喜欢
    • 1970-01-01
    • 2018-01-27
    • 2019-09-03
    • 2019-03-02
    • 2015-04-15
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    相关资源
    最近更新 更多