|
|
1
1
我也推荐kragen2uk和onupdatecascade倡导的“循环”方法(我投票赞成)。我知道我读过一些关于clr例程和SQL并行性的令人恼火的东西,但是我忘记了刚才是什么……但我认为他们在一起玩得不好。 我以前在类似的任务上做过的一点就是建立一个表,列出每一批要完成的工作。对于您启动的每个连接,它都会转到这个表,孕育下一批,将其标记为正在处理,处理它,完成更新,然后重复。这允许您测量性能、管理扩展、允许停止和重新启动而不必重新启动,并为您提供一些东西来显示任务的完成程度(更不用说显示它实际上正在做任何事情)。 |
|
|
2
2
请检查SQL Server上最大并行度(maxdop)的配置设置。也可以设置maxdop的值。 此链接可能对您有用 http://www.mssqltips.com/tip.asp?tip=1047 干杯 |
|
|
3
2
您不能将查询拆分为批,并在单独的连接上分别执行每个批吗?SQL Server只在感觉类似的情况下在查询中使用并行性,尽管您可以停止它,或者甚至通过将并行性的成本阈值更改为O来鼓励它(稍微),但我认为它非常成功。 值得注意的一点是,它只决定在编译查询时是否使用并行。另外,如果查询是在CPU负载较高的时候编译的,则SQL Server不太可能考虑并行性。 |
|
|
4
2
找到一些条件,将集合分成不同的行子集合(1-100、101-200,随便什么),然后同时从多个连接调用update语句,其中每个连接处理表中的一个子集行。所有连接应并行运行。 |