Postgres: отслеживать, какая часть плана выполнения выполняется для длинных запросов - PullRequest
0 голосов
/ 29 мая 2020

Информация в pg_stat_activity немного скудна и не дает информации о ходе выполнения длинных запросов.

Эта информация вроде доступна в v$session_longops в Oracle, где указывается, какой объект обрабатываемых (target), количество элементов, которые необходимо от go до (totalwork), и количество элементов, обработанных на данный момент (sofar). Затем можно использовать это, чтобы определить, в какой части плана выполнения находится движок. Эта информация также доступна в Spark и Flink.

Мне было интересно, есть ли способ получить к нему доступ в Postgres, либо в системных таблицах, либо путем наблюдения за процессами, либо там, где можно заглянуть внутрь, если он хочет реализовать патч.

Ура!

1 Ответ

0 голосов
/ 29 мая 2020

AFAIK, нет существующей функции для подробного отслеживания длительных запросов (такая функция есть только для 3 операторов DDL ).

Патч был предложен 3 года назад go. Похоже, он не был интегрирован.

См. Обсуждение в списке рассылки хакеров: https://www.postgresql.org/message-id/CADdR5nxQUSh5kCm9MKmNga8+c1JLxLHDzLhAyXpfo9-Wmc6s5g@mail.gmail.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...