迅速に実行されるストアドプロシージャを解決するために、[ターン]が、C#のプログラムが遅い実行の問題を呼び出します

この2日間は、それはおそらく内部で、クエリアナライザを実行するSQL Server2012で120行ストアドプロシージャについて、もっと落ち込んで問題が発生した
は1秒未満、あなたは約500データレコードにスクリーニングつかむことができ、非常に良いです。
しかし、C#のプログラムコードで接続タイムアウトを促し、と呼ばれています。CommandTimeoutのが300に設定されている、表示されるまで3分程度必要である
コードを複数回チェックし、エラーが検出されません。問題が残っています。

分析:
1、クエリアナライザ速いスピードの実装、およびあまりないデータの量に起因します。
唯一のプログラムで呼び出す2は、遅い場合があります。
3は、あなたは結果が出てきた表示することができ、CommandTimeoutのパラメータを設定しますが、長い時間のために。

上記の分析は、最初に問題がC#コードであると結論付けました。しかし、後にはゲインをチェックしません。

Baiduの上でこの情報を照会します。
最後にCSDNフォーラムへの投稿に同様の情報を見つけました。これは、応答でユーザーを語った「実施計画があるかもしれない、期限切れ」で
本当に私の夢目覚めた言葉。

すぐにクエリアナライザで:

@ objnameに= 'ストアドプロシージャ名' SP_RECOMPILEのexec

テストプログラムは、再び、この時間は最終的に成功しました。非常に満足して高速化。

分析:
ストアドプロシージャは、プリコンパイルされているので、最初に実行される、実行計画が生成され、時間の実施後、この計画の実現は、それぞれのではなく、(指定された表示またはストアドプロシージャ侯を再コンパイルしない限り)使用されます実行計画が実行されました。
オブジェクト・ストレージ・プロセスは、(実施計画が期限切れ)リストラや関連データは、当初の計画につながる可能性がある大きな変更は、現在の状況に適合していませんでした伴う場合、この場合は、ストアドプロシージャを再コンパイルする必要があります。

あなたは1を変更した場合、再度変更すること、およびその再テストしますありません

おすすめ

転載: www.cnblogs.com/qi123/p/11370208.html