TL; ДР: Есть ли способ запросить у экземпляра postgres, сколько ядер у него доступно для обработки?
Postgres имеет хорошую репутацию в отношении эффективного распараллеливания нескольких запросов по доступным ядрам.
Я пишу приложение с конвейером преобразования данных, интенсивно использующим ЦП, которое должно выполняться postgres на большом количестве коллекций исходных данных. Каждый конвейер будет работой одного соединения, и я надеюсь использовать параллелизм, установив несколько соединений и выполнив работу (которая происходит во временных таблицах, ограниченных в пределах одного соединения).
Я хотел бы настроить, сколько одновременных подключений поддерживать с базой данных. Я предпочитаю использовать множитель по доступным ядрам, что-то вроде 1.5x, чтобы не загромождать СУБД ожидающими соединениями, но при этом гарантировать, что у нее всегда есть над чем поработать.
Однако СУБД будет экземпляром AWS RDS, выбранным пользователями. Я заранее не знаю, сколько ядер будет доступно. Есть ли способ запросить базу данных, чтобы узнать?
Большое спасибо.
create table cores(num_cores integer);
copy cores(num_cores) from program ‘grep processor /proc/cpuinfo|wc -l’;
select * from cores;
В psql
так как postgres
(Не тестировалось в AWS)