Есть ли способ переопределить конфигурацию сервера Statement_timeout в БД Azure для PostgreSQL? - PullRequest
0 голосов
/ 30 марта 2019

На портале Azure в PostgreSQL оператор Statement_timeout конфигурации сервера управляет следующим.

"Устанавливает максимально допустимую продолжительность (в миллисекундах) любого оператора. 0 отключает это."

Кажется, нет способа переопределить этоустановка, как только она установлена.Мы используем провайдер .NET от Npgsql и попытались установить время ожидания = 0 и команду времени ожидания = 0 в строке подключения, чтобы увидеть, что это переопределит, но, похоже, это не повлияет на время ожидания.Мы не хотим отключать его или устанавливать его с большим интервалом, но у нас есть некоторые хранимые процедуры, которые выполняются долгое время и которые мы хотели бы установить для каждого оператора.

спасибо.

1 Ответ

0 голосов
/ 05 апреля 2019

Вы можете установить Statement_timeout на уровне транзакции.В приведенном ниже примере я запускаю транзакцию, устанавливаю таймаут, вызываю функцию сна postgres, затем отмечаю конец транзакции.

BEGIN; SET LOCAL statement_timeout = 2000; SELECT pg_sleep(3); COMMIT;

Обратите внимание, что, поскольку тайм-аут функции ожидания (который отмечен как ERROR), транзакция откатывается.

В качестве альтернативы вы можете установить Statement_timeout на уровне сеансаиспользуя просто SET.

Информация о SET и SET LOCAL: https://www.postgresql.org/docs/10/sql-set.html

...