Hibernate L2 C хиты занимают много времени 25к хитов-> 1,7 секунды - PullRequest
1 голос
/ 26 апреля 2020

У меня есть приложение с начальной загрузкой 2.1.8, в котором большинство объектов кэшируется в кэш-памяти второго уровня hibernate. Коллекции также кэшируются (охотно). Я сталкиваюсь с проблемой производительности при выполнении запроса find all. Статистика следующая:

Session Metrics {
34225 nanoseconds spent acquiring 1 JDBC connections;
0 nanoseconds spent releasing 0 JDBC connections;
57054 nanoseconds spent preparing 1 JDBC statements;
5537918 nanoseconds spent executing 1 JDBC statements;
0 nanoseconds spent executing 0 JDBC batches;
366086602 nanoseconds spent performing 3794 L2C puts;
1732885874 nanoseconds spent performing 24779 L2C hits;
0 nanoseconds spent performing 0 L2C misses;
72295530 nanoseconds spent executing 1 flushes (flushing a total of 20654 entities and 7817 collections);
0 nanoseconds spent executing 0 partial-flushes (flushing a total of 0 entities and 0 collections)
}
  • 25K попаданий на L2 C занимает около 1,7 се c
  • каждая находка Все достигает БД для выбора всего запроса ( я думаю, именно так работает кеш, извлекайте идентификаторы из БД и извлекайте объекты из кеша)
  • Разное время, затрачиваемое на операции установки и сброса кеша.

Я использую Hibernate 5.3.11, ehCache 3.6.3

Кажется, что узким местом является попадание в кеш. Какие-либо идеи о причине root или какие-либо предложения, которые могут помочь улучшить производительность?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...