我想就我对连接池面临的情况有所了解。
我是SW开发人员,致力于一些多租户应用程序。我们有一个数据库,每个租户(客户端)都拥有自己的架构。对于每个连接的租户,启动独奏过程并获得独立数据库连接。在不久的将来,我需要在300多个同时租户环境中使用它。
根据我的阅读,不建议使用大量连接(100+)到postgres。一种解决方案是使用连接池。另一个是使用更多数据库服务器。
我在想连接pooler(pgBouncer,pgPool)。但在我们的应用程序的当前状态,它有点问题。这是"有问题的"的列表项目和建议的解决方案:
在整个生命周期内与服务器建立单一连接 - 这是因为我们正在大量使用临时表和预处理语句。临时表的持续时间是可变的,但在大多数情况下,它们会跨越多个事务。
使用"设置search_path =" custom_schema",public;" - 这是在每个租户的应用程序启动时完成的,因此使用了正确的表。
使用依赖于临时表的触发器 - 这用于自动记录某些内容。它使用在应用程序启动时自动创建的临时表。
所以,我不知道我是否应该开始考虑重新设计。如果我可以添加更多的数据库服务器,一切都会运行,而不需要重新设计它。
您怎么看?
谢谢
答案 0 :(得分:0)
使用pool_mode = session
的pgbouncer中的这些问题不是问题。