Postgres如何处理比连接更多的请求
How does Postgres handle more requests than connections
在浏览 Postgres 架构时,提到的一件事是 Postgres 数据库的连接限制为 500(可以修改)。要从 Postgres 数据库中获取任何数据,我们首先需要与它建立连接。那么在这种情况下,如果同时有 10k 个请求到达数据库,会发生什么情况?请求如何映射到连接限制,因为我们有 500 个限制。我们是否需要增加限制,或者我们是否需要创建更多的 Postgres 实例,或者是并发性在起作用吗?
如果单个数据库上有 10000 个并发语句 运行,任何硬件都会超载。你就是不能那样做。
即使是 500 也是太多的并发请求,所以这个值对于 max_connections
(或者准确地说是对于并发活动会话数)来说太高了。
好处是您不必那样做。您使用连接池充当应用程序和数据库之间的代理。如果您的数据库语句足够短,您可以轻松处理具有几十个数据库连接的数千个并发应用程序用户。这可以防止数据库过载并避免频繁打开数据库连接,这会很昂贵。
如果您尝试打开的数据库连接数超过 max_connections
允许的数量,您将收到一条错误消息。如果从池中请求数据库连接的进程超过限制允许的数量,则某些会话将挂起并等待连接可用。使用连接池的另一点!
在浏览 Postgres 架构时,提到的一件事是 Postgres 数据库的连接限制为 500(可以修改)。要从 Postgres 数据库中获取任何数据,我们首先需要与它建立连接。那么在这种情况下,如果同时有 10k 个请求到达数据库,会发生什么情况?请求如何映射到连接限制,因为我们有 500 个限制。我们是否需要增加限制,或者我们是否需要创建更多的 Postgres 实例,或者是并发性在起作用吗?
如果单个数据库上有 10000 个并发语句 运行,任何硬件都会超载。你就是不能那样做。
即使是 500 也是太多的并发请求,所以这个值对于 max_connections
(或者准确地说是对于并发活动会话数)来说太高了。
好处是您不必那样做。您使用连接池充当应用程序和数据库之间的代理。如果您的数据库语句足够短,您可以轻松处理具有几十个数据库连接的数千个并发应用程序用户。这可以防止数据库过载并避免频繁打开数据库连接,这会很昂贵。
如果您尝试打开的数据库连接数超过 max_connections
允许的数量,您将收到一条错误消息。如果从池中请求数据库连接的进程超过限制允许的数量,则某些会话将挂起并等待连接可用。使用连接池的另一点!