gpt4 book ai didi

NHibernate 延迟非常高

转载 作者:行者123 更新时间:2023-12-03 12:10:35 25 4
gpt4 key购买 nike

我将 NHibernate 用于 ORM,并将大量实体的加载合并到一个大查询中。

我实际上正在加载一个字典,大约 500K 条目,每个单词都与其他单词相关。在我们的应用程序中,在后台运行加载过程可能非常棘手,因为我们必须手动加载一个未按时加载的条目,因为任何时候都可能要求输入任何单词。我们唯一的要求是尽可能快地加载所有数据。
我也尝试使用无状态 session ,但有一个异常,即无状态 session 无法获取集合(出于某种原因,可能与无状态 session 没有缓存有关?)

问题是,虽然查询在 SQLServer 中不超过 25 秒,但对于 ICriteria.List() 则需要 3 多分钟。

我使用NHProf 来分析加载过程,发现实体的创建是一项代价高昂的事情,它占用了NHibernate 中的大部分加载时间。

我能做些什么来减少这种延迟吗?内存分配是昂贵的,还是数据的“填充”?

谢谢!

最佳答案

也许您应该考虑这样一个事实,即 NHibernate(像大多数 ORM 一样)并不特别适合(或不适合)这些类型的批量加载场景。您尝试加载、提供或获取多少行?你想做什么?预填充缓存?做批处理?

我的直觉是你应该认真考虑你的应用程序的目的,并相应地选择底层技术。也许您可以阐明您的意图/要求?

编辑好的,从你的评论中我明白你在这里想要做什么。我要做的第一件事是使用原始 ADO.NET 创建一个简单的原型(prototype)来加载相同的数据,以感受使用标准数据访问和内存中集合可获得的最佳性能。接下来,摆弄不同的集合类型以查看填充和搜索时表现良好的内容。如果像这样加载数据仍然太慢,那么是时候开始研究其他加载数据的方法了:从本地数据文件基于文件、水合预序列化对象、某种形式的快速按需加载等。

关于NHibernate 延迟非常高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2177285/

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