У нас есть база данных PostgreSQL для хранения данных нашего C++-приложения, и мы используем libpqxx для подключения к ней.Эффективность открытия соединений базы данных PostgreSQL
В настоящее время мы открываем новый pqxx::connection
для каждой транзакции, которую мы хотели бы запустить. В развертывании мы планируем выполнить, пожалуй, около четырех или пяти десятков транзакций в минуту, а наше приложение будет работать 24x7x365.
Согласно PostgreSQL architectural fundamentals,
... [серверный процесс PostgreSQL] начинается ("вилки") новый процесс для каждого соединения.
Это звучит для меня как наш метод открытия нового pqxx::connection
для каждой сделки действительно неэффективно, так как мы косвенно нерест несколько десятков новых процессов каждую минуту. Это то, о чем мы действительно должны беспокоиться?
Я вижу here on the PostgreSQL wiki, что PostgreSQL сам по себе не поддерживает пул процессов клиентского подключения, поэтому нам действительно нужно беспокоиться об этом. Если да, существует ли «правильный» способ держать объекты pqxx::connection
неограниченно, так что новый процесс не разветвляется каждый раз, когда мне нужно подключиться к базе данных? Имейте в виду, что мое приложение должно запускаться весь день, каждый день, поэтому было бы неприемлемо, чтобы мои TCP-соединения упали после длительного периода времени.
Спасибо за ваш ответ. Я ценю вход. Я обязательно буду документировать эту неэффективность в нашем коде как место для будущего совершенствования :) – villapx