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



我有7个报告,每天在深夜下载。

这些报告可以在CSV/XML下载。我正在下载CSV格式,因为它们是有效的。

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

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

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

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

我仅在Azure SQL中获得超时例外。在SQL Server中,它可以正常工作。作为解决方法,我将超时增加到1000个查询。

此应用程序在Azure S2中运行。

我已经考虑了发送XML的选项,但我发现SQL Server在处理XML方面很慢。

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

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

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

这些表目前没有任何索引,只有群集整数主键。

每行都有一个唯一的代码。此代码用于确定是否插入/update/delete

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

您的源是输入整个数据吗?它们是否已更新/新。我假设通过说唯一的代码(插入/update/delete(,您仅考虑更改(delta(。如果没有,那是一个领域。另一个是考虑并行性。我认为那时您需要为每张表有不同的存储过程。非依赖表可以一起处理

最新更新