Как кэширование запросов повышает производительность в NHibernate?

StackOverflow https://stackoverflow.com/questions/2365234

  •  23-09-2019
  •  | 
  •  

Вопрос

Как работает кэширование запросов и как это повышает производительность в NHibernate?

Это было полезно?

Решение

Когда запрос кэшируется, NHibernate кэширует идентификаторы объектов, полученных в результате запроса.

Очень важно, что он кэширует не сами объекты, а только их идентификаторы.Это означает, что вы почти наверняка хотите убедиться, что эти объекты также настроены на кэширование в вашем кэше второго уровня.В противном случае NHiberate получит идентификаторы объектов из кэша запросов, но затем будет вынужден обратиться к базе данных, чтобы получить фактические объекты.Это может быть дороже, чем просто обращение к базе данных в первую очередь!

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

Другие советы

Когда вы включаете кэширование, NHibernate будет сохранять результаты запроса где-то внутри при выполнении запроса.Когда вы попытаетесь выполнить запрос с теми же параметрами снова, он получит результаты из кэша, а не из базы данных, и, конечно, это намного быстрее!но имейте в виду, что другие приложения могут изменять базу данных в фоновом режиме!Но NHibernate может обновлять кэши.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top