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

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как в PostgreSQL узнать загрузку CPU через SQL?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #33726
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        SQL-запрос загрузки цпу процессора для PostgreSQL

      • #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 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С