средств, насколько я понял, не существует. statement_timeout в заголовке или внутри функции - не действует.
Потребность: некоторые функции имеют смысл, только если они выполняются быстро: 100-150 мс
Выносить их в отдельный коннект - мука
Хм, если вы можете их вынести в отдельный коннект, вы вероятно можете обернуть из вызов установкой Set
Можно сделать трюк с автономной транзакцией, но что всё-таки делать с функцией, которая выполняется дольше? Если убить, то придётся открывать новое соединение, это дорого по сравнению с 100-150мс. Ждать пока не завершится — ещё дороже. Все таймауты — они увеличивают загрузку сервера, а не уменьшают. Лучше придумайте эвристику, которая по входным параметрам будет оценивать, будет функция выполняться быстро или долго. Если оценили, что быстро — выполняйте и ждите, и пишите в лог, если не угадали и выполнялось долго
Трюк с автономная транзакцией - это dblink к самому себе? Тут смысл делать очень мелкие запросы с таймаутом dblink - дорого будет
Обсуждают сегодня