1

DB 接続の複数のインスタンスが必要なシナリオを考えようとしています。

通常、DB 接続は、すべてに使用される 1 つのシングルトン オブジェクトです。しかし、同じクラスの別のインスタンスを作成したい理由は何でしょうか。(どっかで読んだ。)

これを理解しようとすると、DB 接続の 2 つのインスタンスは、DB への書き込み時に競合を引き起こす可能性が非常に高いように思われます。しかし、読むときは速くなりますか?(もしかしてこれも一因?)

DB接続はあまり良い例ではないかもしれません。Singleton クラスの複数のインスタンスを作成することが理にかなっている場所を知っている場合は、他のシナリオを教えてください。

4

2 に答える 2

0

ローカル アプリ/組み込み DB とサーバーについて、より具体的に説明する必要がある場合があります。

ただし、データベース サーバー (SQL Server、Oracle など) と通信するアプリケーション サーバー (IIS、Apache など) がある場合は、同時実行と複数の接続を同時にアクティブにする必要があります。多くの同時要求を処理するサーバーであり、SQL サーバーがそれを処理できる必要があるため、同時実行が必要です。サーバー上のすべてのデータベース アクティビティをシリアル化すると、壊滅的になります。

DB 接続に関しては、ほとんどの db アクセス テクノロジで接続プーリングが提供されます。したがって、単に接続を開き、作業を行ってから閉じるだけです。これにより、接続が取得されてプールに解放されるため、再作成する必要はありません。

Re: 「DB 接続の 2 つのインスタンスは、DB への書き込み時に競合を引き起こす可能性が非常に高いと思われます」

ほとんどのデータベース サーバーは、並行性を処理する際の制御も提供します。たとえば、SQL サーバーでは、ロックレベルと分離レベルがあります。

于 2013-07-24T03:59:24.450 に答える