pg_stat_activity - как увидеть текущую активность внутри запущенной хранимой процедуры - PullRequest
0 голосов
/ 24 июня 2019

У меня есть среда postgres, где хранимые процедуры широко используются, и эти процедуры сложны и вызывают другие хранимые процедуры.

Когда я запрашиваю таблицу pg_stat_activity, я получаю запись, которая показывает вызываемую процедуру, но не указывается, какие операторы sql вызываются в процедуре.

например. выберите myprocname ($ 1, $ 2, $ 3, $ 4)

В результате я не могу выделить конкретные операторы SQL, которые могут вызывать проблемы с производительностью. RDS, о котором идет речь, является экземпляром amazon RDS, поэтому доступ к процессу на уровне ОС недоступен (насколько я смог определить).

Я искал информацию в Google по этому вопросу без особой удачи.

Этот вопрос не о конкретном сценарии, поскольку код является частной собственностью, и я не могу обсудить его напрямую, а о том, как выполнить такую ​​настройку, когда основной источник, к которому я привык, не предоставляет достаточно подробностей.

1 Ответ

3 голосов
/ 24 июня 2019

Существует два способа узнать, сколько времени занимают операторы SQL внутри функций:

  1. Включить auto_explain с auto_explain.log_nested_statements = on. Это позволит вам увидеть продолжительность и планы выполнения операторов SQL внутри функции в файле журнала PostgreSQL.

  2. Включить pg_stat_statements и установить параметр pg_stat_statements.track = all.

    Затем pg_stat_statements будет отслеживать информацию для операторов SQL внутри функции. Таким образом, вы можете увидеть, какие из ваших утверждений занимают сколько времени в базе данных.

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