Есть ли способ переопределить конфигурацию сервера 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

Другие вопросы по тегам