使用多个记录更新数据库

时间:2013-07-05 09:48:45

标签: sql sql-server database performance records

我们使用SQL Server并拥有Winforms个应用程序。在我们的产品中,有时单笔交易记录超过50000,我们在那里面临性能问题。

当我们拥有大量数据时,我们通常会在多个数据库调用中执行此操作。因此,在我们的一个导入功能中,我们正在更新一堆1000行的服务器。因此,如果我们有5000条记录,那么在处理它们时(在for循环中)我们更新前1000行,然后继续处理,直到我们获得新的1000行进行更新。这表现得更好但老实说并不是我在表现方面的最佳表现。

但我们在其他导入/导出功能中已经看到,与1000相比,每5000行更新数据库会产生很好的结果。因此我们面临着很多困惑,而且代码在我们的代码中看起来并不相同应用

任何人都可以告诉我这是怎么回事。您没有样本数据,数据库架构等,是的我同意。但是在使用数据库时是否应该注意/考虑任何情况?为什么不同数量的记录给我们带来了好的结果,我们忽略了什么?我不是数据库的冠军,更像是.Net中的编程人员。很高兴听到你的建议。

不确定这是否有用,我们的数据通常包含员工详细信息,如工资单信息,个人详细信息,应计利益,薪酬等。数据来自Excel,我们还在内部流程中生成大量数据。如果您需要更多信息,请与我们联系。谢谢!

1 个答案:

答案 0 :(得分:0)

您拥有的数据库标注越多,您需要的连接管理就越多(打开连接,使用连接,清理和关闭,我们是否使用连接池等。)。您通过网络发送相同数量的数据,但是您更频繁地打开和关闭水龙头,这带来了开销。

这样做的缺点是交易中持有的数据量更大。

但是,如果我可以提出建议,您可能需要考虑以不同的方式实现此目的,方法是尽快将所有数据加载到数据库中(进入约束的临时表中)如果可能的话,取消激活并关闭事务管理,然后允许数据库执行检查和验证数据的任务。

由于您使用的是SQL Server,因此您只需启用SQL事件探查器,定义适当的事件过滤器,并观察在不同负载下发生的情况。