0

使用SQL Server,有Winforms申请。在我们的产品中,有时单笔交易记录超过 50000 条,我们会遇到性能问题。

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

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

谁能给我一个想法是什么导致了这种情况发生。您没有示例数据、数据库架构等,是的,我同意。但是在使用数据库时是否应该注意/考虑任何场景?为什么不同数量的记录会给我们带来好的结果,有什么我们忽略的吗?我不是数据库方面的冠军,更多的是 .Net 中的编程人员。很高兴听到您的建议。

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

4

1 回答 1

0

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

这样做的缺点是事务中保存的数据量更大。

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

由于您使用的是 SQL Server,因此您只需打开 SQL Profiler,定义适当的事件过滤器,然后观察在不同负载下会发生什么。

于 2013-07-05T10:01:26.383 回答