接続タイムアウト=0の長所と短所は何ですか?
そして、Connection Lifetime = 0の使用は何ですか?
例えば
(Database=TestDB;
port=3306;
Uid=usernameID;
Pwd=myPassword;
Server=192.168.10.1;
Pooling=false;
Connection Lifetime=0;
Connection Timeout=0)
そして、接続プールの使用は何ですか?
接続タイムアウト=0の長所と短所は何ですか?
そして、Connection Lifetime = 0の使用は何ですか?
例えば
(Database=TestDB;
port=3306;
Uid=usernameID;
Pwd=myPassword;
Server=192.168.10.1;
Pooling=false;
Connection Lifetime=0;
Connection Timeout=0)
そして、接続プールの使用は何ですか?
タイムアウトは、あきらめる前にリクエストからの応答を待つ時間です。TimeOut = 0は、接続が永久に発生するのを待ち続けることを意味します。本当に遅いサーバーに接続している場合、応答に12時間かかる場合は正常であると思います:-)。一般的に悪いこと。リクエストに何らかの妥当なタイムアウトを設定して、ターゲットがダウンしていることを認識し、人生を進めることができるようにします。
接続の有効期間=接続が切断されて再作成されるまでの接続の存続期間。ライフタイムが0の場合は、強制終了して再作成しないことを意味します。接続の切断と再作成は遅いため、通常は悪いことではありません。さまざまなバグにより、接続が不安定な状態でスタックする可能性があります(奇妙な3ウェイトランザクションを処理する場合など)。ただし、99%の場合、接続の有効期間を無限に保つことをお勧めします。
接続プーリングは、接続の作成が非常に遅いという事実に対処する方法です。したがって、リクエストごとに新しい接続を作成するのではなく、たとえば10個の事前に作成された接続のプールを用意します。必要な場合は、1つ借りて使用し、戻ってきます。プールのサイズを調整して、アプリの動作を変更できます。より大きなプール=より多くの接続=一度に何かを実行するより多くのスレッドが、これはまた、あなたがしていることを圧倒する可能性があります。
要約すると、
ConnectionTimeout = 0は悪いので、30秒のように妥当なものにします。
ConnectionLifetime=0は大丈夫
ですConnectionPooling=disabledは悪いです。おそらくそれを使用したいと思うでしょう。
これが古いスレッドであることは承知していますが、接続プールを無効にするか、接続ライフタイムを使用する必要がある場合があることを指摘することが重要だと思います。
一部の環境 (特に Oracle を使用する場合、または少なくとも私の経験では) では、Web アプリケーションは、ユーザーの資格情報とサーバーの構成ファイルにある固定接続文字列を使用してデータベースに接続するように設計されています。この場合、接続プールを有効にすると、サーバーは Web サイトにアクセスするユーザーごとに接続プールを作成します (「プールの断片化」を参照してください)。シナリオに応じて、これは良い場合も悪い場合もあります。
ただし、データベース サーバーが最大アイドル時間を超えるデータベース接続を強制終了するように構成されている場合、接続プールにまだ存在する可能性のある接続をデータベース サーバーが強制終了する可能性があるため、接続プールが問題になります。このシナリオでは、これらの接続はいずれにせよサーバーによって閉じられているため、これらの接続を破棄するためにConnection Lifetimeが役立つ場合があります。