在发布后优化基于ORM的模型

时间:2010-02-05 15:01:08

标签: hibernate optimization performance

我正在使用Hibernate来处理一个新项目,当我工作时,我意识到我对应用程序的原始愿景可能不会最终成为它的命运。我认为不会经常请求的数据(因此延迟加载)可能最终需要85%的请求。相反,我在需要的假设下加载的数据可能会像我认为的那样频繁出现。

是否有一些分析工具或分析ORM用法的方法(特别是:Hibernate)可以帮助我在应用程序达到临界质量后调整它?

唯一想到的是编写一些模仿实际使用情况的Selenium脚本,并使用不同的配置进行负载测试。这似乎可能会起作用,但感觉就像获取我所追求的信息的一种非常圆润的方式。 是更好的方式......

4 个答案:

答案 0 :(得分:1)

  

是否有一些分析工具或方法   分析ORM使用情况(具体为:   Hibernate)可以帮助我调整我的   应用程序达到之后   临界质量?

Hibernate 3在运行时收集statistics。可能值得一看。 hibernate doc中有一个“Monitoring performance”部分。

  

唯一想到的是   写一些Selenium脚本   模仿实际使用情况并进行负载测试   配置。这似乎是   它可能会工作,但也感觉像一个   得到的非常圆润的方式   我追求的信息。

您应首先尝试捕获一些实际工作负载。然后弄清楚如何重现它。

否则你仍然会有偏见并且可能产生实际上并不代表现实的负荷。如果您无法捕获真实的工作负载,请与潜在的最终用户讨论,看看他们如何使用该应用程序,并确保您的方案尽可能接近真实的最终用户行为。

答案 1 :(得分:1)

“......帮助我在应用程序达到临界质量后调整应用程序?”

这很重要。

您正在调整您的应用程序 - 整体而言。 App +数据库结构+ Hibernate ORM映射+其他任何东西。

您的应用程序应该包含可用于调整应用程序的日志。如果您没有合适的日志记录,现在是时候添加一组适当的日志来确定正在使用哪些用例以及发生了什么。

调整日志与调试日志一样重要。它们是您申请的一流部分。

答案 2 :(得分:1)

Hibernate Profiler可以根据hibernate的运行时统计信息生成实时报告。生成各种警报,例如关于SELECT N + 1的警告。

它可以在持续集成系统中使用。

答案 3 :(得分:0)

使用数据库的SQL profiler / logger来保留生产数据库的标签。请注意延迟加载查询或经常重复的查询,这些查询可能表示存在N + 1问题(迭代一个惰性集合,单独加载每个对象)。

我不知道提供这种能力的(任何)ORM。