问题标签 [nhprof]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
942 浏览

nhibernate - NHibernate、ActiveRecord、事务数据库锁以及何时刷新提交

这是一个常见的问题,但到目前为止发现的解释和观察到的行为有一定的差距。

我们希望在我们的 MVC 网站中使用以下 nHibernate 策略:

  • ASessionScope用于请求(跟踪更改)
  • 仅包装我们的ActiveRecord.TransactonScope插入(以启用批处理的回滚/提交)
  • 选择在事务之外(以减少锁定范围)
  • 插入的延迟刷新(以便我们的插入/更新在会话结束时作为 UoW 发生)

现在我们:

  • 不要从SessionScope(使用 FlushAction Auto 或 Never)获取隐含事务
  • 如果我们使用ActiveRecord.TransactionScope,则不会延迟刷新,并且任何包含的选择也会陷入长时间运行的事务中。

我想知道是不是因为我们有一个旧版本的 nHibernate(它来自非常接近 2.0 的主干)。

我们只是无法获得预期的 nHibernate 行为,而且性能很差(使用 NHProf 和 SqlProfiler 来监控数据库锁)。

0 投票
3 回答
1041 浏览

nhibernate - NHibernate Linq 使用隐式事务?

我正在使用 Ayende 的 NHibernate Linq 版本 2.1.2,可在此处获得,并且当我使用 NHProf 检查使用此方法的查询时:

它给了我一个警告,我正在使用隐式事务。问题是,我在存储库中使用它来抽象出数据库会话,但我仍然想要返回 IQueryable 的灵活性,这样我就可以运行我想要的任何 Linq 查询。有没有办法Session.Linq<T>()在不暴露的情况下显式地将其包装在事务中,或者在这种情况下我应该忽略警告吗?

多一点背景。我正在使用这样的方法:

0 投票
1 回答
303 浏览

java - 为 Hibernate 设置 HProf

如何为 Hibernate 设置NhProf

0 投票
2 回答
2581 浏览

nhibernate - NHibernate 需要很长时间才能运行查询

这是使用 Fluent NHibernate 完成的

我有一个 NHibernate 查找,它正在从一个表中检索数据。如果我使用生成的 sql 并通过查询分析器运行它,则运行大约需要 18 毫秒。

使用 NHProfiler,我得到这个查询的持续时间为 ~1800 毫秒 - 比 sql 长 100 倍!

正在填充的对象包含一个子类,但是这个子类是从 NHibernate 二级缓存加载的

返回的数据是分页的(每个查询 50 个),但据我所知,这应该没有任何区别

我还运行了一个计数,根据 NHProfiler,这在查询分析器中需要约 4 毫秒,而根据 NHProfiler,这需要约 1800 毫秒。

NH Profiler 是显示查询执行时间,还是检索、映射类和构建对象图的完整时间?如果是前者 - 为什么它比直接运行查询要花这么长时间?

编辑:刚刚发现 Ayende 关于 NH Profiler 中给出的查询持续时间值的帖子:http: //ayende.com/Blog/archive/2009/06/28/nh-prof-query-duration.aspx - 所以肯定是查询耗时较长的数据库

0 投票
2 回答
2858 浏览

nhibernate - 在 Nhibernate 中加载与获取

我的 Web 应用程序中的母版页进行身份验证并使用Get.

在此之后,每当用户控件或任何其他类需要用户对象时,我都会执行Load.

通常nhibernate 应该从缓存中加载对象或在调用时返回持久加载的对象Load。但这不是我的 Web 应用程序显示的行为。NHprof总是在调用 Load 时显示 sql。如何验证 的正确行为Load

我使用S#arp 架构框架。

0 投票
1 回答
948 浏览

nhibernate - 使用 NServiceBus 时,NHProf 中的“在多个线程中使用单个会话可能是一个错误”错误

在执行使用 NHibernate 进行数据访问操作的 NServiceBus 处理程序时,我看到一个错误,我不确定是否需要关注。

处理程序具有执行以下操作的代码:

当我分析这个过程时,我看到以下几行:

  • 在具有隔离级别的分布式事务中登记会话:可序列化
  • 以隔离级别开始事务:未指定
  • SELECT ... FROM AccountGroups this_ WHERE this_.ID = 123
  • 插入帐户...
  • 提交事务
  • 提交事务

当我调用 tx.Commit() 时,我的代码会生成第一条提交消息。第二个提交消息,我相信当我们离开处理程序的 Handle 方法并由 NServiceBus 调用时发生。第二次提交调用会在 NProf 中生成一个警报,指出“在多个线程中使用单个会话可能是一个错误”。

我不认为这是一个问题,因为当时确实没有什么可以提交的,但是我在这里做了一些不合适的事情吗?我确实想在事务中运行我的代码,但是当我这样做时,我会收到此警报。

有任何想法吗?

0 投票
1 回答
2347 浏览

nhibernate - 计算 NHibernate 在单元测试中执行的查询数

在代码的一些单元/集成测试中,我们希望检查我们的代码是否正确使用了二级缓存。

根据 Ayende 在这里提供的代码:

http://ayende.com/Blog/archive/2006/09/07/MeasuringNHibernatesQueriesPerPage.aspx

我为此编写了一个简单的类:

预期用途:

但它总是为查询计数返回 0。没有记录任何 sql 语句。

但是,如果我使用 Nhibernate Profiler 并在我的测试用例中调用它:

NHProf 使用类似的方法从 NHibernate 捕获日志输出以通过 log4net 等进行分析,然后我的 QueryCounter 开始工作。

看起来我在我的代码中遗漏了一些东西来正确配置 log4net 以记录 nhibernate sql ... 有没有人知道我还需要做什么才能从 Nhibernate 获取 sql 日志记录输出?

附加信息:

日志记录配置:

show_sql: 真

基于 jfneis 的响应,我编写了一个简单得多的类,它只使用 NHibernate 的工厂统计信息:

一旦启用统计信息,它就可以正常工作。

0 投票
1 回答
1046 浏览

nhibernate - 使用 NHibernate 提交事务后的故障安全清理(集合)警告

在查看 NHProfiler 时,我在提交交易后收到以下警告:

故障安全清理(集合):NHibernate.Engine.Loading.CollectionLoadContext

我完全不知道这可能是什么或如何解决这个问题。有人可以帮助我吗?

谢谢,耶勒

0 投票
1 回答
394 浏览

nhibernate - 在使用 NHProf 进行分析运行之间清除 NHibernate 缓存

我们正在尝试使用 NHProf 来分析我们的 NHibernate 应用程序。我们有一系列单元测试来执行各种调用。但是,如果我们多次运行单元测试,我们会在 NHProf 中得到不同的结果:

  • 第 1 节 [1]
  • 会议 2 [32]
  • 第三节 [32]
  • 第 4 节 [2]
  • 第 5 节 [2]

我尝试在单元测试结束时调用 session.Clear(),并尝试重建解决方案。但基本上我们想要调整和调整查询,如果 NHibernate 在运行之间进行缓存,则不能这样做。当然,其他人以前也遇到过这种情况,我们只是很密集,但我很感激你能提供的任何帮助。

更新好吧,如果这是预期的行为,如何测试查询优化?

0 投票
2 回答
115 浏览

asp.net - 当我将 ViewModel 对象传递给我的 ASP.NET MVC 视图页面时,NHProf 生成“从视图执行的此语句”警告

我刚刚注意到,在我的网站的一个页面上,我将一个 ViewModel 传递给我的视图页面,NHProf 给出了以下警告:

此语句从视图中执行,这可能导致性能不佳和/或行为脆弱。

然后链接到此页面: http: //nhprof.com/Learn/Alerts/QueriesFromViews

我的 ViewModel 仅包含 2 个属性:

我将照片分配给我的控制器中的这个 ViewModel,如下所示:

My View 显然继承了这种类型,并且除了输出一个标题(它使用SelectedPhoto对象)之外,它只是循环遍历每个Photos渲染的每个内容。

NHProf 将“问题”查询显示为它检索我在视图中循环浏览的照片集合的位置,尽管我没有明确告诉它关闭并从我的视图中获取这些记录 - 我已经通过Photos我的 ViewModel 属性中的这些记录。

我有其他页面不需要传递 ViewModel,我只需传递IEnumerable<Photo>给 View,然后渲染标记与我在问题视图中所做的完全相同,NHProf 没有给出警告(因为不应该有) 在那种情况下。

我在想它可能与延迟加载有关,并且因为我的集合是 ViewModel 的一部分,所以当我遍历PhotosViewModel 类型中的属性时,它会在那时获取这些记录吗?

有谁知道这里发生了什么?该网站功能完美,但 NHProf 只是看到它正在做一些不应该做的事情?!