Назад | Перейти на главную страницу

Можно ли проверить доступные ядра во время выполнения на postgres?

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)