2010-12-08 6 views
0

T-SQLコードのブロックを強制的にマルチスレッドで実行する方法はありますか?SQL Server強制マルチスレッド

もしそうでなければ、コードブロックがシングルスレッドで実行されるのを避けることができますか?

+2

の詳細を読むことができます珍しい要件 - SQL Serverが適切に動作するようにするよりも、むしろ答えが得られないでしょうか? –

+0

基本的に、私は並行して実行できる多くのプロセスを持っています。これらのプロセスの中には、現在実行中のものに基づいて強制的にシングルスレッドで実行するものもあります。他のプロセスはすばやく終了することがありますが、シングルスレッドプロセスは非常に長い時間実行され続けます。私は長いプロセスがある種のポーリングを行い、マルチスレッドを実行できるようになるまで実行しないようにするのが良いかどうか疑問に思っています。タスクの各「パート」は、サーバ上の現在の負荷に基づいて、個別に最適化できるように、その場合に – bingles

+0

、長い実行中のタスクを分割、または再コンパイルオプションを見てのいくつかの手段を見て良いかもしれ当時。 –

答えて

4

最大並列度を指定できますが、最小値は指定できません。クエリにパラレルプランがある場合、使用するプロセッサの数に関する決定は、現在のサーバー負荷に応じて各実行時に行われます。

リソースgovenorを使用し、クエリを優先度の高いグループに入れることで、SQL Server 2008でこのような事態が発生する可能性を高めることができます。

+0

私はそれを恐れていました。ありがとう – bingles

0

以降では、マルチスレッド実行を強制することができます。

次のコードは、マルチスレッド強制します

OPTION (RECOMPILE, QUERYTRACEON 8649) 

をし、これは、単一のスレッドに

OPTION (MAXDOP 1) 

を強制的にあなたがPaul White's blogか、単にGoogleの "QUERYTRACEON 8649"