Что может вызвать случайное замедление для собственного запроса вставки JPA? - PullRequest
0 голосов
/ 09 января 2019

У меня есть NativeQuery, который копирует около 1000 строк (выбирает и вставляет с некоторыми измененными столбцами).

Проблема в том, что иногда (около 1/3 циклов) executeUpdate занимает 50 мс, а иногда (2/3 циклов) это занимает 1500 мс.

Один и тот же запрос выполняется много раз во время запроса. Обычно все эти пробеги медленные или все быстрые.

Все запросы были запущены из одного и того же состояния базы данных (т. Е. Точно одинаковые записи выбраны и вставлены). Ни база данных, ни Tomcat не имели других пользователей в это время. Иногда это медленно до 5 раз подряд, иногда быстро до 5 раз подряд, иногда медленно, быстро, медленно, быстро.

Я попытался перезапустить Tomcat и Postgres. Иногда это медленно после перезагрузки, иногда это быстро. Я попытался добавить System.gc() в начало запроса, но случайность осталась.

Когда я пробую один и тот же запрос напрямую (через dBeaver / JDBC), он всегда быстрый.

Мое окружение:

  • Tomcat 8.5.33
  • Eclipselink 2.6.4
  • PostgreSQL 9.6.11
  • Ubuntu 18.04

Есть идеи, как отладить эту ситуацию?

...