Pergunta

Como funciona o cache de consultas e como ele melhora o desempenho no nHibernate?

Foi útil?

Solução

Quando uma consulta é armazenada em cache, o NHibernate irá armazenar em cache os IDs das entidades resultantes da consulta.

Muito importante, ele não armazena em cache as próprias entidades - apenas seus IDs.Isso significa que você quase certamente deseja garantir que essas entidades também estejam configuradas para serem armazenáveis ​​em cache no seu cache de segundo nível.Caso contrário, o NHiberate obterá os IDs das entidades do cache de consulta, mas será forçado a ir ao banco de dados para obter as entidades reais.Isso pode ser mais caro do que simplesmente acessar o banco de dados!

Também importante:as consultas são armazenadas em cache com base em seus valores SQL e de parâmetros exatos.Quaisquer diferenças em qualquer um deles significarão que o banco de dados será atingido.Portanto, você provavelmente deseja armazenar em cache apenas as consultas que apresentam pouca variação em suas entradas.

Outras dicas

Quando você habilita o cache, o Nibernate armazena os resultados da consulta em algum lugar dentro quando você executar a consulta. Quando você tenta executar a consulta com os mesmos parâmetros novamente, ele obterá resultados do cache, não do banco de dados e, é claro, é muito mais rápido! Mas tenha cuidado para que outros aplicativos possam modificar o banco de dados em segundo plano! Mas o Nibernate pode atualizar caches.

Ao usá -lo, o Nibernate não precisa acessar o armazenamento de dados, acesse o que está no cache.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top