Временно увеличить 'Statement_timeout' для запросов Postgres в Rails? - PullRequest
0 голосов
/ 14 мая 2018

Я уже настроил statement_timeout за database.yml на несколько секунд, но в моем приложении есть несколько дорогих запросов, которые требуют более длительного времени выполнения запроса.Каков будет рекомендуемый способ достижения этого на уровне запроса?Мне нужно было бы временно установить statement_timeout на большее значение, выполнить запрос и сбросить его до значения по умолчанию?Или сброс даже не требуется?

1 Ответ

0 голосов
/ 14 мая 2018

Я думаю, что вы можете достичь этого, только изменив statement_timeout для всего соединения, а затем вернув его обратно:

  def execute_expensive_query
    ActiveRecord::Base.connection.execute 'SET statement_timeout = 600000' # 10 minutes
    # DB query with long execution time
  ensure
    ActiveRecord::Base.connection.execute 'SET statement_timeout = 5000' # 5 seconds
  end

На уровне БД вы можете установить statement_timeout для текущей транзакции только согласно это руководство :

BEGIN;
SET LOCAL statement_timeout = 250;
...
COMMIT;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...