1

私はこれに対する答えをある程度知っていますが、根本的な概念を実際に理解することはできません。現在、接続プールを使用するように常に指示されていることを知っています。しかし、このシナリオを想像してみてください。

1つのデータベースと1つのテーブルからデータを複数回読み取る必要があります。

接続プーリングはマイクロ秒のオーバーヘッドを注入しますが、すべてに単一の接続を使用し、その周りをロックすることで、それを排除しませんか?

1つのデータベースであり、1つのテーブルがあります。マルチスレッド接続プールからパフォーマンスを向上させることができる可能性はかなり低いのではないでしょうか。

ここでいくつかの明確さを期待しています。そして、なぜ、接続プールが常に優れているのかを説明するいくつかの簡単なリソースがあります。

ありがとう。これが最大の質問ではないことを私は知っています、そして私はあなたの時間を感謝します。私は特に.net環境にいますが、これはプログラミング全体の基本的な概念ですよね?

4

1 に答える 1

2
  1. 1 つのグローバル接続では、偽の接続障害を処理する準備ができている必要があります。これらは常に発生する可能性があります(ネットワークの問題など)。
  2. 単一のテーブルに対して複数の同時実行ステートメントを使用すると、絶対に同時実行性が得られます。通常、SQL Server はテーブルを排他的にロックしません (非常にまれです)。
  3. どこかで同期プロトコルを使用するのを忘れるでしょう (どこでもロックします)。最終的には間違いを犯し、レースと戦わなければなりません。
  4. アプリ全体をブロックする遅いランナウェイ クエリがある場合。ブラウザには「ハング」しているように見えます。
  5. グローバル ロックですべての HTTP 要求をシリアル化します。使用する CPU は 1 つだけです。まったくスケーリングしません。あなたのアプリはバーストをうまく処理できません。

単一のグローバル接続を持つことは、本当に悪い考えです。プーリングを使用しないのはなぜですか?これにより、同期を使用する開発作業が節約されます。それはさらに少ない仕事です。

もちろん、プーリングが常に優れているとは限りません。そうでない病的なケースを構築することができます。ただし、現在の HTTP 要求よりも長く接続を開いたままにする必要があるケースに遭遇したことはありません。

于 2013-01-16T18:30:04.550 に答える