gpt4 book ai didi

performance - NHibernate select指数增长缓慢

转载 作者:行者123 更新时间:2023-12-04 02:53:02 26 4
gpt4 key购买 nike

我的问题是,从数据库中获取记录时,NHibernate的速度呈指数级增长。我有一个要求,基本上是从一个非常大的数据库中提取所有数据以用于报表中。

我想,因为记录集太大,所以我无法一次获得所有记录,所以我想尝试将其分解。基本上,我在遍历索引范围,即。将id x记录到y,然后将y + 1记录到z,依此类推。

每个结果集约10兆。前20次左右的拉拔每个过程不到一分钟,然后下一次拉动则需要10分钟,30分钟和1小时。我在那里停止了程序,不想等到下一次拉动来。我从中断的索引处再次运行了该程序,同样,前20个左右的拉动确实非常快,然后由于某种奇怪的原因出现了严重的减速。

任何帮助将不胜感激。

最佳答案

NHibernate正在为您做很多工作,这可能会使它变慢。它保留您在 session 中从中拉出的对象,这基本上是一级缓存。当您运行查询时,它将检查该对象集,以查看是否需要将它们刷新回数据库(也许您已经更改了它们,以便它们现在符合查询的条件!)。因此,一种很可能的情况是您的查询正在 secret 地遍历大量对象,试图弄清楚它向数据库发送查询之前应该向数据库写入什么内容。

如果是这种情况,您可以尝试使用定期session.Clear()或session.Evict(object)从缓存中删除对象,以便NH不会尝试使数据库与它们保持一致。如果您希望NH“注意”它们,则以后可以随时重新附加它们。

编辑:或使用无状态 session 。这是一个example

关于performance - NHibernate select指数增长缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2151198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com