2013-03-25 80 views
0

我正在开发基于Hibernate的数据库访问和持久层。必须使用hibernate模块的应用程序必须执行具有多个连接的非常复杂的查询。Hibernate优化,使用二级缓存?

我必须根据其他客户购买的物品推荐物品,因此很难将其存储在缓存特定的数据中,因为推荐是具体的,并且缓存未命中的百分比将非常高。

我测试了性能,我观察到所有工作都很慢,我使用Mysql 5,Hibernate 4和C3P0连接提供程序。我应该使用基于EHCACHE的二级Hibernate缓存系统吗? Memcached是一个很好的解决方案吗?有没有其他方法可以提高Hibernate的性能?

感谢您的建议和帮助。

回答

0

首先通过一个直接的SQLClient工具检查查询的性能。如果它表现不好,请调整它。 现在,如果您计划单独使用缓存作为参考数据(主要是只读),EHCache是​​一个不错的选择。如果你想使用缓存来处理事务数据,JBOSS树缓存是一个不错的选择。

+0

我尽可能地优化了查询。如果我在Mysql Workbench中测试查询,它运行速度慢,但不像Hibernate那样慢。问题在于缓存推荐并不容易。 – amartin 2013-03-25 09:01:31

+0

使用explain选项作为您的选择查询的前缀,以查看和分析mysql工作台的执行计划。例如:解释select * from user where id = 5;你看到使用索引列的访问吗? – maggu 2013-03-25 09:04:58

+0

是的,我不知道这个Mysql功能。谢谢。但我不是Mysql专家,我不知道应该看哪些参数来改进查询。我可以在额外的专栏中看到正在使用的索引。 – amartin 2013-03-25 09:47:57

相关问题