Postgresql 什么';ORM/query builder库连接池大小和pgbouncer连接池大小之间的差异是什么?
我对pgbouncer池大小配置和ORM(类似)、查询生成器(类似)库池大小配置感到困惑。该体系结构如下所示: 应用程序代码=>pgbouncer=>postgresql pgbouncer.ini:Postgresql 什么';ORM/query builder库连接池大小和pgbouncer连接池大小之间的差异是什么?,postgresql,orm,sequelize.js,knex.js,pgbouncer,Postgresql,Orm,Sequelize.js,Knex.js,Pgbouncer,我对pgbouncer池大小配置和ORM(类似)、查询生成器(类似)库池大小配置感到困惑。该体系结构如下所示: 应用程序代码=>pgbouncer=>postgresql pgbouncer.ini: ;; ... ;; Default pool size. 20 is good number when transaction pooling ;; is in use, in session pooling it needs to be the number of ;; max clients
;; ...
;; Default pool size. 20 is good number when transaction pooling
;; is in use, in session pooling it needs to be the number of
;; max clients you want to handle at any moment
;default_pool_size = 20
;; ...
续集连接池配置:
const sequelize=新的sequelize(/*…*/{
// ...
游泳池:{
最高:5,
分:0,,
获得:30000,
闲置:10000
}
});
knex.js连接池配置:
var knex=require('knex'))({
客户端:“mysql”,
连接:{
主持人:“127.0.0.1”,
用户:“您的数据库用户”,
密码:“您的数据库密码”,
数据库:“myapp_测试”
},
池:{min:0,max:7}
});
如果同时使用sequelize.js连接池配置和pgbouncer连接池大小配置,会发生什么情况?数据库服务器使用哪种配置?我应该只使用其中一个吗?谢谢。将菊花链连接池放在一起很少有意义。因此,除了内置的pgbouncer外,使用pgbouncer可能没有任何意义。数据库服务器不知道您的连接池,除非池管理器向数据库发送自己的显式命令,并且它有自己使用的配置文件(postgresql.conf)。将连接池串联在一起很少有意义。因此,除了内置的pgbouncer外,使用pgbouncer可能没有任何意义。数据库服务器不知道您的连接池,除非池管理器向数据库发送自己的显式命令,并且它有自己使用的配置文件(postgresql.conf)。如果您有3个应用程序进程运行knex或sequelize,然后,您应该将pgbouncer poolsize设置为比单个knex/sequelize池使用的大小大3倍 然后,您还需要确保postgres服务器还配置了足够的连接来处理pgbouncer连接
尽管如@jjanes所说。没有理由将pgbouncer与knex/sequelize一起使用,因为它们已经提供了池。我想pgbouncer应该与不支持池的框架一起使用。例如,如果PHP或cgi stript在每次页面加载时重新初始化并调用数据库。如果您有3个应用程序进程运行knex或sequelize,那么您应该将pgbouncer poolsize设置为比单个knex/sequelize池使用量大3倍 然后,您还需要确保postgres服务器还配置了足够的连接来处理pgbouncer连接 尽管如@jjanes所说。没有理由将pgbouncer与knex/sequelize一起使用,因为它们已经提供了池。我想pgbouncer应该与不支持池的框架一起使用。例如,如果PHP或cgi stript在每次页面加载时重新初始化并调用数据库