У меня есть 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
Есть идеи, как отладить эту ситуацию?