mysql - 哪些 Hibernate 查询会命中第二层缓存?

标签 mysql hibernate caching memcached second-level-cache

我刚刚添加 Memcached 作为 Hibernate 的第二层缓存。安装缓存后,性能实际上受到了重大影响。所有查询都会变慢。我意识到原因可能是由于我的大多数查询不是基于id,所以没有使用第二层缓存。

我的问题是,非基于 id 的查询不应该直接进入数据库而不访问缓存吗?也就是说,在命中缓存之前确定查询是否“适合缓存”的决策?如果是这样,性能不是应该更快吗?

最佳答案

当我检查 Hibernate 代码时,看起来 Hibernate 在使用 HQL 查询时无法重用缓存(它没有从 HQL 到其缓存机制的编译器)。

我建议您使用fjorm而不是 hibernate 。免责声明:我是 fjorm 的创始人。

关于mysql - 哪些 Hibernate 查询会命中第二层缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18545090/

相关文章:

java - 悲观锁中的 OptimisticLockException

asp.net - 似乎浏览器(或者是 visual studio?)正在缓存样式表,因此我对样式表所做的任何更改

java - Hibernate + MySQL + JPA

php - Mysql 使用 JOIN 时为每个表设置不同的选择集

java - 使用 AngularJS 和 SPRING 插入数据库

mysql - 乐观锁失败;使用 Spring Data 的 CrudRepository 保存记录时,嵌套异常为 org.hibernate.StaleObjectStateException

javascript - 清除浏览器缓存以加载重命名的文件

performance - 系统/操作系统缓存与应用程序缓存

php - 来自数据库的谱系/家谱图

mysql - 编写动态代码以将值插入到变量中,变量也是列名