この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 63300|答える: 7

[.NET Core] ADO.NET ObjectPoolを通じてSqlConnection接続プールを作成します

[リンクをコピー]
2020年4月19日 18:51:31に投稿 | | | |
ObjectPoolはMicrosoftの新機能で、Microsoftは再利用可能なオブジェクトのメンテナンスを支援しています。

簡単に言えば、共有自転車と同様に、利用時にコードをスキャンしてロック解除すると、車両が占有されていることを意味します。使用すると、車をロックすると車両は占有を解除します。 これらの占領やリリースはすべてプラットフォームによって管理されています。

一部のオブジェクトはスレッド安全ではありませんが、オブジェクトをインスタンス化するたびにリソースを消費する必要があります。

.NET Coreにおけるオブジェクトプールの詳細な説明
https://www.itsvse.com/thread-9152-1-1.html
(出典:Architect_Programmer)
まず、IPooledObjectPolicyインターフェースを継承する新しいSqlConnectionPooledObjectPolicyクラスを作成し<T>、その2つのメソッドを実装する必要があります。

Create メソッドでオブジェクトをインスタンス化する方法、Returnはオブジェクトが再利用可能かどうかを示し、falseが返された場合はオブジェクトプールから削除されます。

テストのソースコードは以下の通りです:

検査結果は以下の通りです。



最初の10クエリでは接続プールがやや遅く、その後はSqlConnectionの各インスタンスよりも速くなります。

添付はソースコードです

観光客の皆さん、この投稿の隠された内容を見たい方は、どうぞ答える






先の:C#プログラムは時間のかかるテストクラスを実行します
次に:MSSQL Trusted_Connection設定
2020年4月19日 21:58:46 に投稿 |
これは新しいことだ
2020年4月30日 13:05:18に投稿 |
来て見て、応援して、ソファに座って
 地主| 2021年3月22日 15:31:43に投稿 |
DefaultObjectPoolProviderのソースコード
MaximumRetained Default environment.ProcessorCount * 2;





 地主| 2021年3月22日 15:34:51 に投稿 |
 地主| 2021年3月23日 09:50:57に投稿 |
テストコード:

maximumRetainedは5に設定されており、テストは使用されるたびに一度だけインスタンス化されます。以下の図に示されています。



戻さない場合、テストは10回インスタンス化されますが、最大Retained設定の5回を超えていて例外は出しません。使用完了後に徐々に再利用され、最終的には5回だけが保持される場合があります。


 地主| 2021年3月24日 18:23:44に投稿 |
SQL Server Connection Pool (ADO.NET)

ユーザーが接続でOpenを呼び出すたびに、プールプロセスはそのプール内で利用可能な接続を探します。 プール接続が利用可能であれば、新しい接続を開く代わりに発信者に返されます。 アプリケーションがその接続でCloseを呼び出すと、プールプロセスは接続を閉じるのではなく、アクティブな接続プールセットに接続を返します。

https://docs.microsoft.com/zh-cn ... -connection-pooling

2021年8月17日 10:13:07に投稿 |
学ぶために
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com