3

私は、会社を離れた人から受け継いだ手順の更新に取り組んでいます。

WITH RECOMPILEヘッダーの後にオプションを含むプロシージャを見つけました。メモには、「ブロッキングによるタイムアウトを軽減するために」追加されたと書かれています

ALTER PROC ups_SomeProc (@pMyParameter INT) WITH RECOMPILE
AS
BEGIN

私の経験ではWITH RECOMPILE、ブロックに役立つオプションや、ブロックに関連するオプションについては聞いたことがありません。

このオプションについての理解が欠けているのでしょうか、それとも実装した人がその機能について混乱したのでしょうか? ブロックの解決策としてこれを聞いたことがありますか?

注: これは、サーバーがまだ SQL Sever 2008 エディションを実行していたときに行われました。

4

2 に答える 2

2

OPTION WITH RECOMPILEメモリにキャッシュされた既存のプランがある場合でも、Sql Server に実行プランの再コンパイルを強制します。

基になるデータが劇的かつ非常に迅速に変更されると、キャッシュされた実行プランの効率が低下します。したがって、このような状況でWITH RECOMPILEは、オプションを使用すると、既にコンパイルされた実行計画を使用した場合よりもはるかに高速にプロシージャが実行されます。

開発者/担当者がストアド プロシージャを実行したときに、長い遅延が発生したと思います。そして彼がWITH RECOMPILEオプションを使用すると、より速く実行されました。したがって、再コンパイル オプションを指定せずにこのプロシージャを実行すると、ブロックが発生すると彼は考えたのかもしれません。:) 面白い話ですが、これが起こったことだと思います。

于 2014-03-03T21:31:35.290 に答える