- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SELECT文でタイムアウトが起こります。)
SELECT文でタイムアウトが起こります
このQ&Aのポイント
- SQLServer2005とASP.NET C#の環境で開発を行っています。1つのクラスに2つのクエリを呼び出す処理を書いていますが、2ユーザが同じタイミングで検索を行うとタイムアウトが発生してしまいます。また、まれにデッドロックも起こります。
- 問題の原因として、SQLServerではSelectのたびにlockがかかるため、他の方法を探しているということが挙げられます。ただし、テーブルには他ユーザからの更新もあり得るため、「WITH(NOLOCK)」を使用することはできないです。
- この問題の解決策としては、トランザクション分離レベルを変更することが考えられます。ただし、現在の設定は規定値であるため、他の解決策を模索しているとのことです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- tomo197608
- ベストアンサー率14% (3/21)
回答No.2
補足
>2ユーザともタイムアウトになるのですか? はい。ほぼ同じタイミング、かつ10秒程度、タイムアウトになります。 >タイムアウトがハードウェアのリソースやコネクションの競合などではなくて、テーブルロックにより発生しているという結論はどうやって導き出しましたか? 私もjamshid6さんと同じように、ブロッキングやデッドロックが発生するとは思っていなくて、前述したようにSELECTでlockがかかるというサイトを見た、と言うだけです。多数のユーザがアクセスするシステムのため、2ユーザの処理だけでリソースのせいとは考えにくく、安易にそのサイトを受け入れたと言うところです。 >NOLOCKをつけたらタイムアウトしなくなるか試してみるのがいいと思います。 そうですね、NOLOCKをつけて同じ現象が発生しなければ、ロックが原因だったと言え、対処法としてはスナップショット分離レベルに設定すればよいと言うことになりますね。 jamshid6さん、ありがとうございました。分離レベルでもちょっと分からないところがあるのですが、ロックが原因だと判明したら質問させていただきます。