我们有一个 PostgreSQL 数据库来存储我们的 C++ 应用程序的数据,我们使用libpqxx连接到它。
pqxx::connection
目前,我们为要运行的每个事务打开一个新事务。在部署中,我们预计每分钟最多执行大约四到五打事务,并且我们的应用程序将 24x7x365 运行。
根据 PostgreSQL架构基础,
...[PostgreSQL 服务器进程] 为每个连接启动(“分叉”)一个新进程。
在我看来,我们pqxx::connection
为每笔交易打开一个新进程的方法确实效率低下,因为我们每分钟间接产生几十个新进程。这是我们真的应该担心的事情吗?
我在 PostgreSQL wiki 上看到 PostgreSQL 本身并不维护客户端连接进程池,所以看起来我们确实需要担心它。如果是这样,是否有一种“正确”的方法可以无限期地保留pqxx::connection
对象,以便每次我需要连接到数据库时都不会派生一个新进程?请记住,我的应用程序需要每天运行一整天,因此我的 TCP 连接在很长一段时间后断开是不可接受的。