Будьте в спящем режиме: batch_size? Второй Кэш Уровня?

Попробуйте

: cindent

набора Это включит C делающее отступ волшебство в энергии. Таким образом, как только Вы открываете фигурную скобку, она автоматически снабдит вкладками, пока Вы не закроете фигурную скобку.

13
задан Stu Thompson 2 April 2012 в 09:44
поделиться

1 ответ

Сегодня я провел много исследований и смог найти ответ на свой вопрос. Я просматривал код Hibernate, и поток выглядит следующим образом:

Инициализирована ли коллекция?

  • Нет? Выполнить пакетную выборку (элементы, полученные в результате пакетной выборки, помещаются в кэш)
  • Да? Поищите в кеше конкретный элемент, если его нет, выполните пакетную выборку.

Итак, если элемент в коллекции, которую вы ищете, НАЙДЕН в кеше, то пакетной выборки не произойдет. Если элемент НЕ найден в кэше второго уровня, тогда происходит пакетная выборка, НО она будет выполнять пакетную выборку НЕЗАВИСИМО от того, находятся ли эти пакетные элементы в кэше.


----- ПРИМЕР 1 - ---

Товар:

(Три предмета в коллекции - партия по 3 штуки) Первое:

  • collection.getItem (0) - Нет кеша | batch-fetch 3 элемента
  • collection.getItem (1) - загружено с помощью batch-fetch
  • collection.getItem (2) - загружено с помощью batch-fetch

Теперь, где-то еще, позже по времени:

  • collection.getItem (0) - Попадание в кеш
  • collection.getItem (1) - Попадание в кеш
  • collection.getItem (2) - Попадание в кеш

----- ПРИМЕР 2 -----

Плохое:

(Три элемента в коллекции - размер пакета 3)

В этом случае элемент с индексом 0 был удален из кеша, потому что, возможно, кеш был заполнен, а элемент был удален, либо элемент устарел или простаивает.

  • collection.getItem (0) - Not In Cache, So do Batch Of 3 (select * where id in (?,?,?))
  • collection.getItem (1) - Уже в кэше (все равно заменено пакетной выборкой)
  • коллекция. getItem (2) - уже в кэше (все равно заменено пакетной выборкой)

Таким образом, компромисс здесь заключается в том, что у вас будет меньше вызовов SQL из-за пакетной обработки, но вы будете чаще пропускать кеширование. Открыт билет для пакетного просмотра кэша второго уровня, прежде чем он попадет в базу данных.

http://opensource.atlassian.com/projects/hibernate/browse/HHH-1775

Голосовать это вверх!

6
ответ дан 2 December 2019 в 01:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: