私のプロファイラ トレースは、exec sp_reset_connection
すべての SQL バッチまたはプロシージャ コールの間に呼び出されていることを示しています。それには理由がありますが、パフォーマンスを向上させるために不要であると確信している場合、呼び出されないようにすることはできますか?
更新: これによりパフォーマンスが向上すると考える理由は 2 つあります。
- SQL Server は接続状態をリセットする必要はありません。これは比較的無視できる改善だと思います。
exec sp_reset_connection
クライアントが を送信し、応答を待ってから、実際に実行したい SQLを送信する必要がないため、ネットワーク レイテンシが短縮されます。
2 番目の利点は、私が興味を持っているものです。私のアーキテクチャでは、クライアントがデータベースから離れていることがあるためです。すべての SQL バッチまたは rpc で 2 回のラウンドトリップが必要な場合、ネットワーク遅延の影響が 2 倍になります。このような二重呼び出しをなくすと、パフォーマンスが向上する可能性があります。
はい、アプリの再構築など、パフォーマンスを改善するためにできることは他にもたくさんあります。私は問題の根本原因を解決することが大好きですが、この場合、sp_reset_connection を防ぐことができるかどうかを知りたいだけです。呼ばれること。次に、パフォーマンスの向上があるかどうかをテストし、これを呼び出さない場合のリスクを適切に評価できます。
これにより、別の質問が生じます。sp_reset_connection を使用したネットワーク通信は、上で概説したように本当に発生するのでしょうか? つまり、クライアントは を送信exec sp_reset_connection
し、応答を待ってから、実際の SQL を送信しますか? それとも、すべて 1 つのチャンクにまとめますか?