У нас есть ситуация, когда мы чувствуем, что не в полной мере используем возможности NHibernate, что снижает производительность. Реальная ситуация сводится к примеру «блоги с постами» по этому вопросу.
Сайт блога, где каждый пользователь может иметь свой собственный блог с произвольным количеством постов. Поэтому существует таблица для сообщений, определенных в следующих столбцах:
id, blog_id, post_title, post_contents
Большинство блогов редко обновляются, в то время как некоторые «похожи на твиттер» с частыми обновлениями. Чтений намного больше, чем записей.
На первой странице каждого блога отображаются последние 5 записей.
SELECT TOP 5 * FROM blog_posts WHERE blog_id = ?
Это приведет к тому, что ряд элементов будет помещен как в кэш 2-го уровня, так и в кэш запросов.
Наша проблема в том, что результаты кэшированных запросов для блогов с 99% + чтений уничтожаются из-за небольшого количества часто обновляемых блогов.
Как вы, другие, обычно решаете эту проблему? Каковы лучшие практики?