【问题标题】:Best way to save data into db将数据保存到数据库的最佳方法
【发布时间】:2014-03-01 03:07:50
【问题描述】:

在决定以下哪一项是将数据保存到数据库中的最佳做法时,我有点困惑。

1.在代码(C#)中执行各种数据操作操作,并使用单独的class文件和procedures将结果插入到多个表中,这将保存到单个表中。 FK 关系也从代码(C#) 插入。在这种情况下,结果会被正确处理并提供给程序(为每个表单独),这将为每个表保存数据。

2.在代码(C#)中执行各种数据操作操作,并使用单独的类文件和procedures将结果插入到多个表中,这将保存到单个表中。在这种情况下,结果与前一种情况一样被正确处理并馈送到单个procedure,后者将数据保存到多个表中并负责FK 关系映射。

3.将原始数据传递给procedure,它将在procedure内部执行各种数据操作,数据准备好后,将结果保存到表中。

如果考虑性能,有没有比上述更好的方法?

我是asp.net 开发人员,所以我需要最适合web applications 的方法。

谢谢

【问题讨论】:

  • 在我们的环境中,我们有多个 Web 服务器和一个数据库服务器。我会选择让网络服务器完成这项工作,而不是把它全部放在数据库服务器上。我的菜鸟回答是,这取决于你想让谁做更多的工作,以及你的环境。
  • 在我的环境中,我必须调整现有应用程序以获得更好的性能。那么哪种方法更好呢?或者除了这些选项还有其他方法吗?

标签: c# asp.net sql-server performance stored-procedures


【解决方案1】:

DBA 的回答:选择选项 3,因为 CRUD 的所有业务逻辑都属于数据库。 应用程序开发人员回答:使用 ORM 类与数据库进行交互,这样我也可以进行负载平衡和控制该部分。 这是一场永无止境的辩论。 我一直使用存储过程来处理所有逻辑选项,主要是因为我喜欢您可以完全更改数据库的事实,只要 proc 的输入和输出的签名不改变就没有关系。它还使 DBA 能够优化 proc 中的查询并使用参数化等。但我确实明白我所做的一切也可以用另一种方式完成,这取决于你的意思是什么数据库服务器在做什么,应用程序对数据做了什么,数据是什么……没有什么是非黑即白的

【讨论】:

  • 在我们的应用程序中,我们有第三个选项,但它有时会给出timeout 异常,有时会给出deadlocks。那么这是因为程序内部发生了大量的过程吗?如何克服这种情况?
  • 也许您正在锁定表或事务隔离级别对于您正在做的事情来说太高了... \
猜你喜欢
  • 2012-06-19
  • 2013-01-08
  • 2014-01-29
  • 1970-01-01
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多