25

SqlCommand オブジェクトを使用するときにタイムアウトとして使用する時間を決定するにはどうすればよいですか?

私が取り組んでいるコードの一部(他の誰かが書いたもの)については、次のとおりです。

cmd.CommandTimeout = 60;

これはかなり短いと思います。ただし、フォーラムで 30000 に設定することについて話している人を見たことがありますが、これは長すぎるようです。

アプリケーションに最適なものを知るにはどうすればよいですか?

4

5 に答える 5

42

これが秒なのかミリ秒なのか混乱しているようです。ドキュメントには、タイムアウトは秒単位であると記載されています。ほとんどのクエリでは、1 分のタイムアウトが妥当と思われます。8 時間以上のタイムアウトは合理的ではないようです。

1 分以上かかると予想されるクエリはありますか? その場合は、すべてが正常に機能している場合に表示される値よりも高くなると予想される値に上げますが、問題を警告するのに永遠にかかるほど高くはありません。(たとえば、1 分から 5 分に変更できます。)

于 2011-08-11T09:41:27.193 に答える
6

デフォルト値は 30 秒です ( http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout.aspx )。

データベースが同じマシン上にある場合、通常は変更する必要はありません。試してみてください。接続タイムアウトが発生した場合は、値を増やしてください。

于 2011-08-11T09:43:37.547 に答える
5

サーバーの過負荷やネットワークトラフィックなどを処理するために、可能な限り長いクエリにかかる時間を計算し、おそらくその値に1.5を掛ける必要があります...

于 2011-08-11T09:42:19.250 に答える
2

これは SECONDS 単位であり、実際の SQL コマンドにかかる時間に完全に依存します。

たとえば、ほとんどのコマンドは、完了までに 30 秒もかからないはずの sproc を実行しますが、それよりも長く実行されるコマンドがいくつかあります。つまり、それらには独自の高い値のタイムアウトがあります。

ルーチンにかかる平均時間をプロファイリングし、それに応じてタイムアウトを調整する必要があります。また、レイテンシなどの変数の余地を残すことを忘れないでください.

于 2011-08-11T09:42:25.743 に答える
1

SqlCommand.CommandTimeoutコマンドの実行試行を終了するまでの待機時間を設定するために使用されます。これは、SqlCommand特定の SQL クエリまたはストアド プロシージャを実行し、それが完了するまで待機する時間を指定することを意味します。コマンドが指定された時間内に完了しない場合、コマンドは終了し、例外がスローされます。

したがって、CommandTimeouttotally の値の設定は、アプリケーションと要件によって異なります。実行している SQL ステートメントまたはストアド プロシージャが 60 より大きい値に設定するよりもほとんど時間がかからないことがわかっている場合、そうでない場合は、任意のステートメント。

于 2011-08-11T09:46:03.507 に答える