Есть ли способ переопределить конфигурацию сервера Statement_timeout в БД Azure для PostgreSQL?
На портале Azure в PostgreSQL сервер конфигурации Statement_timeout управляет следующим.
Msgstr "Устанавливает максимально допустимую продолжительность (в миллисекундах) любого оператора. 0 отключает это."
Кажется, не существует способа переопределить этот параметр после его установки. Мы используем провайдер.NET от Npgsql и попытались установить время ожидания =0 и команду времени ожидания =0 в строке подключения, чтобы увидеть, что это переопределит, но, похоже, это не повлияет на время ожидания. Мы не хотим отключать его или устанавливать его с большим интервалом, но у нас есть некоторые хранимые процедуры, которые выполняются долгое время и которые мы хотели бы установить для каждого оператора.
благодарю вас.
1 ответ
Вы можете установить 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