在 NHibernate Profiler 中,我观察到,当我对关联使用渴望获取时,在 HQL 查询中使用“左连接获取”或在条件查询中使用 .SetFetchMode(),查询不再缓存在查询缓存中。
事实上,据我所知,只有非常基本的查询被缓存。如果有人可以让我了解哪些查询会被缓存,哪些不会被缓存,我会标记答案。
如果有任何区别,我正在使用 Memcached.... 对于查询密集型系统,L2 缓存有更好的选择吗?
我发现这相当具有挑战性——如果我不使用急切加载,我会遇到 N+1 问题(但使用缓存),如果我进行急切加载,我会从数据库中获取所有实体,但没有缓存。
似乎有一条很粗的分界线,两种策略都有性能改进,但两种策略都从另一个策略中抢走了性能。
如果有人可以深入了解这条“粗线”的位置,我应该获得最佳性能,或者如何“使线更细”......我会非常关注并标记答案。