|
|
|
Проблема при одновременном обновлении ячейки кеша в hibernate
|
|||
|---|---|---|---|
|
#18+
Всем привет! Пытался использовать ehCache и osCache в hibernate, но проблема одна и та же. При устаревании ячейки hibernate-кеша происходит много обращений к базе до тех пор, пока для первого потока запрос (CriteriaQuery) не выполнится и результат не будет положен в кеш. Хотелось бы, чтобы после устаревания ячейки кеша, пока первый пользователь выполняет запрос для этой ячейки, остальные пользователи ожидали момента обновления этой ячейки, или получали старое значение ячейки (а не выполняли точно такие же запросы). Тогда бы сайт не тормозил бы на несколько десятков секунд каждые 5 минут. Можно ли так настроить кеш в hibernate? Всем заранее спасибо! P.S.: Пример. Я использую хибернейт на сайте с большим количеством одновременных пользователей (несколько десятков) и тяжелыми запросами (до секунды). Expiration время кеша установлено на 5 минут. Поэтому раз в 5 минут кеш устаревает, а так как пользователи открывают страницы сайта одновременно, для каждого из них происходит пересчет страницы. И, соответственно, выполняются одни и те же запросы к базе до тех пор, пока для первого пользователя запрос не будет выполнен и не положен в кеш. Поэтому все пользователи очень долго ожидают загрузки страниц каждые пять минут. P.P.S.: Что я делал в ehcache: Пытался использовать BlockingCache и SelfPopulatingCache, но, судя по всему эти виды кешей можно использовать только для кеширования своих объектов, а в hibernate эти виды кешей не поддерживаются. Что я делал в oscache: В oscache.properties указывал cache.blocking=false и cache.blocking=true, но в обеих случаях паралелльные потоки выполняли запросы к базе параллельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2006, 00:53:01 |
|
||
|
Проблема при одновременном обновлении ячейки кеша в hibernate
|
|||
|---|---|---|---|
|
#18+
1. у hibernate 2 кэша, вы, видно, про 2nd level говорите? 2. может стоит оптимизировать ваши запросы к БД? Настраивать сервер БД и искать другие узкие места ЗЫ кэш тут, на первый взгляд, непричем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2006, 09:50:04 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2147627]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
186ms |
get topic data: |
11ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 193ms |
| total: | 482ms |

| 0 / 0 |
