我刚刚添加了 Memcached 作为 Hibernate 的第二层缓存。安装缓存后,性能实际上受到了重大影响。所有查询都较慢。我意识到原因可能是因为我的大多数查询都不是基于 id,所以没有使用第二层缓存。
我的问题是不应该不基于 id 的查询直接进入数据库而不访问缓存吗?Aka,在命中缓存之前确定查询是否“适合缓存”的决策?如果是这样,性能不应该更快吗?
我刚刚添加了 Memcached 作为 Hibernate 的第二层缓存。安装缓存后,性能实际上受到了重大影响。所有查询都较慢。我意识到原因可能是因为我的大多数查询都不是基于 id,所以没有使用第二层缓存。
我的问题是不应该不基于 id 的查询直接进入数据库而不访问缓存吗?Aka,在命中缓存之前确定查询是否“适合缓存”的决策?如果是这样,性能不应该更快吗?
当我检查 Hibernate 代码时,看起来 Hibernate 在使用 HQL 查询时无法重用缓存(它没有从 HQL 到其缓存机制的编译器)。
我可以建议您宁愿使用fjorm而不是 Hibernate。免责声明:我是 fjorm 的创始人。