RE: Как в PostgreSQL узнать загрузку CPU через SQL?

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

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

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

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

    sql
    SELECT
        query,
        calls,
        total_exec_time,
        mean_exec_time,
        (total_exec_time / calls) AS avg_exec_time,
        rows
    FROM pg_stat_statements
    ORDER BY total_exec_time DESC
    LIMIT 10;
    

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

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

    sql
    SELECT
        pid,
        usename,
        application_name,
        state,
        backend_start,
        query_start,
        now() - query_start AS duration,
        wait_event_type,
        wait_event,
        query
    FROM pg_stat_activity
    WHERE state  'idle'
    ORDER BY duration DESC;
    

    Для мониторинга 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/

    База знаний 1С