我必须在 150 个表的两个(索引)空列上更新所有记录(添加 Guids),每个表有大约 50k 条记录(使用脚本在 c# 中一次创建 40k 更新并将其发布到服务器)和正好 4 个现有列。
在我的本地机器(16GB 内存、500GB 三星 850、SQL Server 2014、核心 i5)上,当我尝试并行运行 10 个表时,总共需要13 分钟,而如果我运行 5,则该过程仅在1.7 分钟内完成。
我确实知道磁盘级别有些事情很忙,但我需要一些帮助来量化这种巨大的时间差异。
是否有确切的 SQL Server DB 视图可以检查此差异?对于给定的硬件,有没有一种确切的方法可以计算出我可以并行运行多少个表更新?(真正的测试服务器有更多 RAM 和 10k rpm 磁盘)。
任何人都可以指出我可以在 SQL Server 上改进以改进并行运行 10 个表的时间吗?
我已经尝试将自动增长大小从 10MB 增加到 100MB,这改善了磁盘队列长度(从大约 5 到 0.1),但实际上并没有减少那么多的总时间。
我在 stackoverflow 上问了完全相同的问题,但到目前为止没有得到任何有用的答案,所以一些或任何见解/帮助都会非常有帮助。:)