August 13th, 2021

Ладога
  • m_f

Postgresql, Hibernate и materialized view

В приложении на Hibernate с Postgresql есть materialized view. Её надо время от времени обновлять.
Я написал такой код:
public void refreshView() {
getSession().createSQLQuery("REFRESH MATERIALIZED VIEW myView").executeUpdate();
}
Когда ту же sql команду я запускаю из Dbeaver, то есть, напрямую из sql, она отрабатывает за довольно короткое время - от нескольких миллисекунд до 30 секунд, что, конечно, много но терпимо. Если же я вызываю в приложении вышеописанный метод, она повисает надолго -самое большое значение было минут 40, дальше ждать мне лени не хватило. Я понимаю, что я что-то делаю не так, но не понимаю где и что. Заранее благодарен за советы.
Upd. Помогло добавление ключевого слова concurrently:
refresh materialized view concurrently myView