Разное время исполнения для одного и того же запроса

1

Я использую hibernate, spring-data-jpa и querydsl.

Когда я впервые подключаюсь к моей индексной странице, я вручную подсчитываю время запроса всех своих операторов repository.findXXX(). Обычно это составляет около 5 секунд, но когда я обновляю страницу, они занимают только 1 секунду.

Может ли кто-нибудь объяснить эту разницу?

  • 0
    Убедитесь, что компоненты инициализируются при первом доступе к вашей странице индекса. Одним из них может быть пул соединений. Включить журналы уровня отладки.
  • 0
    Вы можете объяснить больше, какова роль пула соединений?
Показать ещё 6 комментариев
Теги:
spring
hibernate
jpa
spring-data

1 ответ

3
Лучший ответ
  1. Скорее всего, база данных кэшировала ваш запрос, поэтому он работает быстрее во второй раз.

  2. Чтобы Hibernate кэшировал ваш запрос, вам необходимо:

    • настроить кеш второго уровня с кешированием запросов:

      <prop key="hibernate.cache.use_second_level_cache">true</prop>
      <prop key="hibernate.cache.use_query_cache">true</prop>
      <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>
      
    • активировать кеш запросов для текущего текущего запроса: ****

       List cats = session.createQuery("from MyEntity")
        .setCacheable(true)
        .list();
      
  • 0
    база данных ( mysql ) или hibernate кэширует мой запрос?
  • 0
    Скорее всего база данных. Чтобы Hibernate кешировал ваш запрос, вам нужно активировать кеш 2-го уровня, кеш запросов и пометить запрос как кешируемый.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню