2013-12-24 3 views
1

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

Частота чтения и обновления в приложении примерно одинакова, и один объект обновляется много раз в секунду.

Из анализа журналов спящего режима и статистики кеша второго уровня я вижу, что «выбор» выполняется из кэша, а «обновления» распространяются на базу данных.

Возможно ли обновлять объекты только в кеше и время от времени кэшировать кеш? Если кеш рушится, приложение может восстановить потерянные обновления.

+0

Если сущность обновляется часто, я сомневаюсь, что кеш второго уровня будет очень полезен, так как требуется работа, необходимая для синхронизации кеша с базой данных. Вы можете просто отключить кеш второго уровня для этого конкретного объекта и оставить его для других, которые часто не обновляются. Вы попробовали это? –

ответ

0

Update: после исследования всех видов решений можно сделать вывод, что спящий режим кэша второго уровня не является подходящим выбором, когда есть много обновлений, которые должны быть совершены кэшировать только.

Но все еще существует прозрачное решение. Перехватчики Hibernate и прослушиватели событий допускают относительно простую проприетарную обработку кеша. Мы используем Hazelcast в качестве поставщика кеша, который поддерживает распределенные карты, транзакции, блокировку, pub/sub.