Из-за чего Postgre через pg_stat_activity не показывает запросы?
Ссылка скопирована
Сейчас ситуация такая: есть 1С, которая работает на ПосTelegramрес. Планирую посмотреть, какие запросы отправляет 1С. Запускаю pg_stat_activity, но почему-то не вижу этих запросов. Вот от pgAdmin 4 вижу. А от 1С - не вижу. Все работает на одном сервере - и БД, и 1С.
Смотрю так:
SELECT * FROM pg_stat_activity
Из-за чего так и как поправить?
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
VPN
Как правильно настроить vless для Android TV?
1 ответ
Pyrogram
Как правильно зарегистрировать юзер бота в Telegram?
1 ответ
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
1 ответ
Аккумуляторные батареи
Почему при зарядке автостарта слышен писк, где искать причину?
1 ответ

pg_stat_activityпоказывает только текущую активность PostgreSQL, а не историю всех выполненных запросов. Если запрос был коротким и уже завершился, вы его там не увидите. Это особенно заметно для 1С: запросы могут выполняться быстро, соединения переиспользуются, а в момент просмотра таблица выглядит почти пустой.Сначала проверьте, под каким пользователем и в какой базе смотрите:
select pid, usename, datname, state, wait_event_type, wait_event, query from pg_stat_activity order by query_start desc;
Если вы подключены не к той базе или у пользователя нет прав видеть чужие запросы, результат будет неполным. Суперпользователь видит больше. Обычный пользователь может видеть только свои запросы или ограниченную информацию, в зависимости от версии и настроек.
Также проверьте состояние соединений. В
pg_stat_activityчасто многоidle, а реальные запросы появляются на доли секунды. Для мониторинга коротких запросов лучше включить логирование или использоватьpg_stat_statements.create extension if not exists pg_stat_statements; select query, calls, total_exec_time, mean_exec_time from pg_stat_statements order by total_exec_time desc limit 20;
Для 1С полезно включать медленные запросы:
log_min_duration_statement = 1000 log_line_prefix = '%m [%p] %u@%d '
Тогда всё, что дольше 1 секунды, попадёт в лог PostgreSQL. Это намного полезнее, чем пытаться поймать запрос вручную в
pg_stat_activity.Итог:
pg_stat_activityне является журналом запросов. Он показывает снимок текущего состояния. Для анализа 1С используйте права суперпользователя, фильтр по нужной базе, лог медленных запросов иpg_stat_statements. Так вы увидите не только “что сейчас выполняется”, но и что реально нагружает базу.