我想将参考数据存储在二级缓存中。我发现对于返回单个实体的查询,这确实更快,但是当查询返回一个集合时,缓存比访问数据库慢得多。
我知道NHibernate在从缓存中抓取它们时会从键/值对中组装实体做很多工作,但我仍然对它的速度有多慢感到惊讶。
让我们说我的用例是填充所有可用语言的下拉列表,似乎NHibernate缓存对此没有任何帮助。这是典型的吗?有人做过类似的事情,结果比我好吗?
作为比较,直接在NCache中存储这样的集合比NHibernate缓存(使用NCache)提供的速度快大约400倍。
从NHProf中提取;
- 声明#1 二级缓存加载语言(Hrware.Foundation.Infrastructure.Persistence.Temporal.TemporalIdentifier / * id * /)
- 声明#2 二级缓存集合加载Language.CurrentLocalizations(Hrware.Foundation.Infrastructure.Persistence.Temporal.TemporalIdentifier / * id * /)
- 陈述#3 二级缓存加载LanguageLocalization(Hrware.Foundation.Infrastructure.Persistence.Temporal.TemporalIdentifier / * id * /)
- 声明#4 二级缓存加载语言(Hrware.Foundation.Infrastructure.Persistence.Temporal.TemporalIdentifier / * id * /)
- 声明#5 二级缓存集合加载Language.CurrentLocalizations(Hrware.Foundation.Infrastructure.Persistence.Temporal.TemporalIdentifier / * id * /)
- 声明#6 二级缓存加载LanguageLocalization(Hrware.Foundation.Infrastructure.Persistence.Temporal.TemporalIdentifier / * id * /)
- 声明#7 二级缓存加载语言(Hrware.Foundation.Infrastructure.Persistence.Temporal.TemporalIdentifier / * id * /)
...
等等