SQL Server Complex添加/更新每天合并一百万行

时间:2019-05-26 16:49:53

标签: sql-server asp.net-core-2.0 bulkinsert bulkupdate

我有7个报告,每天晚上都会下载。

这些报告可以在csv / xml中下载。我正在下载csv格式的文件,因为它们可以节省内存。

此过程在后台运行,由hangfire管理。

下载它们后,我正在使用dapper运行存储过程,该过程使用合并语句插入/更新/更新数据。该存储过程具有七个表值参数。

我要将该记录的IsActive列更新为false,而不是删除。

请注意,有2个报告的记录超过100万。

我仅在Azure SQL中收到超时异常。在SQL Server中,它可以正常工作。解决方法是,我将此查询的超时时间增加到1000。

此应用程序正在Azure s2中运行。

我已经考虑过发送xml的选项,但是我发现SQL Server处理xml的速度很慢。

我也不能使用SqlBulkCopy,因为我必须根据某些条件进行更新。

还请注意,将来还会添加更多报告。

此外,当添加新报告时,会有大量插入。如果再次运行先前添加的报告,则将运行多数更新。

这些表当前没有任何索引,只有聚簇整数主键。

每行都有唯一的代码。该代码用于识别是否要插入/更新/删除

您能推荐一种提高性能的方法吗?

1 个答案:

答案 0 :(得分:0)

您的来源是否输入了整个数据?它们是否已更新/新。我假设通过说唯一代码(插入/更新/删除),您仅考虑更改(增量)。如果不是,那是一个领域。另一个是考虑并行性。我认为那么您需要为每个表使用不同的存储过程。非依赖表可以一起处理