statement_timeout прерывает запрос, если он работает дольше лимита. Postgres бросает ERROR: canceling statement due to statement timeout.

На практике ставят на уровне роли приложения — не глобально:

ALTER ROLE app SET statement_timeout = '3s';
-- или на сессию при открытии соединения:
SET statement_timeout = '10s';

Глобально в postgresql.conf — риск: попадут VACUUM, REINDEX, ALTER TABLE, pg_dump и запросы обслуживания. Autovacuum и autoanalyze — фоновые воркеры вне сессии, не затронуты.

statement_timeout отсчитывает время с начала выполнения, включая ожидание блокировки. Для долгого lock-wait — lock_timeout. Для брошенных транзакций — idle_in_transaction_session_timeout.

#postgresql #sysadmin #database