3

デフォルトのタイムアウト値よりも時間がかかると、ストアド プロシージャでランダムな問題が発生したようです。ここでそのことを知らされました。

それで値を大きくしたところ、効果があったようです。

しかし、疑問に思います: クエリや操作に時間がかかる場合に備えて、常に非常に高い数値にしないのはなぜですか? MAXだからと言ってそんなに時間はかからないですよね?

それが事実である場合 (私は想像します)、なぜデフォルト値が非常に低い (30 秒だと思います) のでしょうか?

アップデート

もともとSqlCommandのCommandTimeoutの値を300(5分)にしていたのですが、それで「Context Switch Deadlock occurred」になってしまいました。そこで私はそれを 120 (2 分) に減らしました。いくつかのテストで「タイムアウトが期限切れになりました」が1回発生しましたが、まったく同じ範囲を再試行すると、2回目は正常に完了したため、「それらの1つ」にすぎないと思います-120では十分でない場合がありますタイムアウトですが、300 は明らかに多すぎます。IOW、この少なすぎるものと多すぎるもののバランスをとる行為は、「正確な科学」ではないようです.

4

1 に答える 1

4

タイムアウトは、待機できる最大値のみを制限します。迅速なことに時間がかかることはありません。

できることは何もなく、機能がばかげているだけで、とてつもなく長い時間がかかる場合があります。この場合、より長いタイムアウトが必要です。

ただし、ユーザーはあまり長く待ちたくないことが多いため、常にそうであるとは限りません。また、ユーザーが待つのをやめた場合は、リソースを浪費して、使用されないものを作成している可能性があります。さらに、ユーザーが意図した以上のことを誤って選択した場合、ユーザーを待たせることもできます。

妥当なタイムアウトを維持し、必要な限られたシナリオでのみ延長することをお勧めします。

まったく別のトピックでは、機能を変更して実行を高速化できる場合があります (より少ないデータで動作するようにフィルタリングする、より高速に動作する中間合計を事前に集計する、インデックス、および/またはクエリの最適化など)。インデックスは 2 分と 2 秒の差になります。

于 2015-11-24T17:25:58.720 に答える