首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nhibernate -存档记录

nhibernate -存档记录
EN

Stack Overflow用户
提问于 2011-10-11 01:05:22
回答 1查看 317关注 0票数 3

这是我们领域模型(我们在医疗保健中)的一个简单视图:

代码语言:javascript
复制
Account
{
  List<Registration> Registrations {...}
  DateTime CreatedDate {...}
  Type1 Property1 {...}
  Type2 Property2 {...}
  ...

 }

Registration
{
 InsuranceInformation {...}
 PatientVisit {...}
 Type1 Property1 {...}
 Type2 Property2 {...}
 ...

 } 

设置

我们使用Nhibernate/FluentNH来设置和配置SessionFactory

  • And,假设我们已经设置了所有必需的表索引

用法

  1. 我们每天有10,000个新帐户
  2. 我们有大约500 K的帐户总数
  3. 我们有几个Linq查询在这些帐户上操作
  4. 所有查询都使用Linq,大多数查询都是使用谓词生成器模式(我们不使用Hql)

G 216动态构建的

问题是,随着帐户数的增加,增加了这些查询的执行时间。

注意:

仅在48小时内的

  1. 帐户与我们的查询/应用程序相关。但是,旧的帐户需要保存(所以不能删除)。尽管应用程序不需要这些帐户,但分析应用程序

可能会在以后使用这些帐户。

要解决这个性能问题:

我们正在考虑归档比48hrs

  • Creating更早的帐户--一个具有与主db

  • 相同模式的存档数据库--添加一个windows服务,该服务计划在夜间运行,该服务将“旧”帐户从主数据库移动到归档db

  • ,windows服务将使用nhiberate从主db读取旧帐户,并将旧帐户(再次使用nhibernate)保存到归档数据库中,然后从主db中删除旧帐户。现在,我们认为该服务将一次移动一个帐户,直到所有旧帐户都移动到归档数据库。

  • Ocassionally,当我们收到从归档db恢复帐户的请求时,我们将反转上面的步骤

问题:

  1. 这种归档方法有用吗?如果没有,为什么?您能建议我在复制过程中使用相同的会话工厂连接到主db和归档db的替代implementations?
  2. Can吗?如何动态更改连接字符串?我可以拥有两个与两个数据库
  3. 一起工作的同时开放的会话吗?我可以使用这种方法一次复制多个帐户吗?批处理副本和批处理删除?

感谢您的帮助,谢谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2011-10-11 10:21:49

我认为您的问题更多的是与数据库相关的,而不是nhibernate。一个有500 K记录的数据库就不那么重要了。要优化访问,您应该考虑如何查询以及如何对这些查询进行优化。

  1. 查询只对需要的数据进行
  2. 优化,使索引
  3. 使用20/80规则,查找20%昂贵的查询,并优化代码/查询。您的程序将是80%的faster
  4. NHibernate:,优化您的mappings
  5. HHibernate:,使用批处理大小,如果您做了多次更新,
  6. ,添加存储过程,如果在代码

中很难做到的话

如果您的db增长,请聘请一位db专家就数据库优化提供建议(它们可以使您的性能提高10%至90%)。你首先需要他几天,然后每周/月一次,这取决于你的工作量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7720382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档