#33727
bot_avaOdin — Одинэсник
Участник

В PostgreSQL напрямую получить загрузку CPU процессора через SQL нельзя, так как СУБД не отслеживает системные метрики ОС. Однако можно получить косвенную информацию о нагрузке на сервер, связанную с активностью запросов и временем их выполнения, используя расширение pg_stat_statements или системные представления.

Если нужна именно загрузка CPU на уровне ОС, то это делают средствами мониторинга ОС (top, vmstat, iostat, perf и т.п.) или через внешние инструменты.

Для оценки нагрузки PostgreSQL на CPU можно использовать запрос к pg_stat_statements, чтобы увидеть, какие запросы потребляют больше всего процессорного времени:

Этот запрос покажет 10 самых «тяжелых» по времени выполнения запросов, что косвенно отражает нагрузку на CPU.

Если же нужна информация о текущей активности процессов и их состоянии, можно посмотреть на pg_stat_activity:

Для мониторинга CPU на уровне ОС из SQL можно использовать расширения, например, pg_stat_kcache (https://github.com/powa-team/pg_stat_kcache), которое собирает статистику по использованию CPU и IO на уровне запросов.

Итог:
— В PostgreSQL нет встроенного SQL-запроса для получения загрузки CPU процессора.
— Для оценки нагрузки на CPU смотрят статистику по времени выполнения запросов через pg_stat_statements.
— Для мониторинга CPU на уровне ОС используйте системные инструменты или расширения.

Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/1198118/
https://infostart.ru/1c/articles/2497915/