Не могу понять, как работает кеш запросов и L2C в спящем режиме - PullRequest
0 голосов
/ 01 февраля 2019

Я настроил Hazelcast как L2C для Hibernate.Затем сделал 1-й запрос, используя конструктор запросов hibernate с подсказкой кеша запросов, и я получил:

org.hibernate.engine.internal.StatisticalLoggingSessionEventListener:258 - Session Metrics {
    3263961 nanoseconds spent acquiring 1 JDBC connections;
    401548 nanoseconds spent releasing 1 JDBC connections;
    4244272 nanoseconds spent preparing 1 JDBC statements;
    6266312446 nanoseconds spent executing 1 JDBC statements;
    0 nanoseconds spent executing 0 JDBC batches;
    60891580391 nanoseconds spent performing 641667 L2C puts;
    0 nanoseconds spent performing 0 L2C hits;
    8550 nanoseconds spent performing 1 L2C misses;
    0 nanoseconds spent executing 0 flushes (flushing a total of 0 entities and 0 collections);
    0 nanoseconds spent executing 0 partial-flushes (flushing a total of 0 entities and 0 collections)
}

Получил L2C.Когда я выполняю второй запрос, я получаю тонну запросов на выборку с поиском по идентификатору.

Конфигурации для Hazelcast, Hibernate просты, ничего сложного.

Сущность - это наследование таблицы соединения.

@ Cache (using = CacheConcurrencyStrategy.READ_WRITE) аннотация, используемая в суперклассе.

Проверено Статья Влада Михалчеа: https://vladmihalcea.com/hibernate-query-cache-n-plus-1-issue - предложения, позволяющие избежать проблемы n + 1, не полностью подходят для моего случая.

Ожидается получение результатов из кэша при втором запросе, но, похоже, я не понимаю, как работает кэш запросов.Может кто-нибудь объяснить шаг за шагом, как работает кеш запросов?

1 Ответ

0 голосов
/ 01 февраля 2019

Hibernate не сохраняет результат запроса в области запроса в целом;он скорее хранит набор идентификаторов, где сущности находятся в других регионах «сущностей».

Мое предположение: если что-то неправильно настроено и Hazelcast не хранит сами сущности, возможно, что в то время как список идентификаторов записейизвестный из кеша запросов, он поочередно загружает реальные сущности.

Выполните запрос и проверьте размеры областей кеша.

...