可以将MAXD​​OP设置为仅存储过程吗?

Rya*_*ope 7 sql-server

我有一个包含许多SELECT命令的存储过程.

而不是把的OPTION (MAXDOP 8)在每一个选择命令的结束,是有办法,我可以在存储过程的开始设置和结束时将其删除,实际上并没有将它设置在服务器上?

恩.

sp_configure 'max degree of parallelism', 4
go
reconfigure with override
Run Code Online (Sandbox Code Playgroud)

小智 13

我希望有一种方法可以为proc的范围设置MAXDOP,但我同意没有办法做到这一点.

为了对抗上面的一些建议,使用MAXDOP提示有很大的理由,例如在多处理器环境中进行非工作时间索引构建,更新或数据构建,但MAXDOP设置低于处理器数量以帮助平衡活动在繁忙的"高峰"时段,例如正常营业时间.与某些提示(如索引提示)不同,这不会强制您的进程使用更多线程,但如果计划选择,它将使其能够执行此操作.

如果你将线程加倍,一些索引构建的执行速度几乎会快两倍,因此有一个真正的好处.

  • [加 1] 用于识别此选项有益的特定边缘情况。 (2认同)

Lit*_*les 5

可悲的是没有。

您的选项是使用在服务器级别设置它 sp_configure 'max degree of parallelism',或者更新存储过程中的每个 SELECT 语句以使用OPTION (MAXDOP 8)

也就是说,查询选项应该是最后的手段,如果您的查询表现不佳,则可能存在潜在问题。