2016-06-03 8 views
0

Много логики в моем приложении находится внутри хранимых процедур plpgsql. В результате один вызов может занять секунды или даже минуты. Это прекрасно, но я хочу использовать log_min_duration_statement = 250ms для всех других операторов для отслеживания длинных запросов. Можно ли настроить Postgres так, чтобы длинные вызовы хранимых процедур не регистрировались вообще?Postgres: Как отключить ведение журнала длинных вызовов хранимых процедур?

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

SELECT set_config('log_min_duration_statement', '-1', false) 

К сожалению, это означает, что мое приложение требует суперпользователя роль, и я хотел бы избежать.

+0

это неизбежно. если бы суперпользователь не мог изменить этот параметр, они могли бы запускать длинные «хакерские» запросы, а суперпользователь не заметил бы его в журналах. Вместо этого, возможно, вы хотите trry расширение 'pg_stat_statements'? .. гораздо проще просмотреть его, запросив ... –

+0

Я имел в виду, что вы можете' select * из pg_stat_statements где query! = 'WANTED TO BE AVOIDED'' –

+0

Хорошая идея! Благодарю. –

ответ

0

Права суперпользователя неизбежны для set, изменяя эти параметры.

Если бы суперпользователь не мог изменить этот параметр, они могли бы запускать длинные «взлома» запросы, а суперпользователь не заметил бы его в журналах. Вместо этого, может быть, вы хотите trry pg_stat_statements расширение? .. гораздо легче просматривать его, запрашивая ...

вы можете select * from pg_stat_statements where query != 'WANTED TO BE AVOIDED'