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

Hibernate 优化基于ORM的发布后模型,hibernate,optimization,performance,Hibernate,Optimization,Performance,我正在使用Hibernate处理一个新项目,在我工作的过程中,我意识到我对应用程序的最初设想可能不会成为它的命运。我认为不会经常被请求的数据(因此延迟加载)可能最终会被85%的请求所需要。相反,我在假设需要的情况下加载的数据可能不像我认为的那样经常需要 是否有一些分析ORM使用情况的分析工具或方法(特别是:Hibernate)可以帮助我在应用程序达到临界质量后对其进行调优 唯一想到的是编写一些模拟实际使用情况的Selenium脚本,并使用不同的配置进行负载测试。这似乎是可行的,但也像是一个非常迂

我正在使用Hibernate处理一个新项目,在我工作的过程中,我意识到我对应用程序的最初设想可能不会成为它的命运。我认为不会经常被请求的数据(因此延迟加载)可能最终会被85%的请求所需要。相反,我在假设需要的情况下加载的数据可能不像我认为的那样经常需要

是否有一些分析ORM使用情况的分析工具或方法(特别是:Hibernate)可以帮助我在应用程序达到临界质量后对其进行调优


唯一想到的是编写一些模拟实际使用情况的Selenium脚本,并使用不同的配置进行负载测试。这似乎是可行的,但也像是一个非常迂回的方式来获取我所追求的信息。必须有更好的方法…

使用数据库的SQL探查器/记录器来跟踪生产数据库。注意延迟加载查询或经常重复的查询,这些查询可能表明存在N+1问题(在延迟集合上迭代,分别加载每个对象)

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

是否有一些分析工具或方法 分析ORM使用情况的方法(特别是: 冬眠)这可以帮助我调整我的 在达到以下条件后申请 临界质量

Hibernate 3在运行时聚集。也许值得一看。hibernate文档中有一个节“”

我唯一想到的是 要编写一些Selenium脚本 模拟实际使用情况并进行负载测试 配置。好像 它可能会起作用,但也会让人感觉像一个 非常绕道的获取 我要的信息

您应该首先尝试捕获一些真实的工作负载。然后找出如何复制它

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

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

这很重要

您正在调整应用程序--作为一个整体。应用程序+数据库结构+Hibernate ORM映射+任何其他内容

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

调优日志与调试日志一样重要。它们是应用程序的一流部分。

可以从hibernate的运行时统计数据生成实时报告。会生成各种警报,例如关于选择N+1的警告

它可以用于连续集成系统中