2012-04-11 5 views
2

現在、いくつかのコードを最適化しようとしており、トランザクションの終了時に各トランザクションおよび切断が呼び出される前に接続が行われていることに気付きました。各トランザクションの接続/切断に関するOracleのパフォーマンス

以前の私の経験では、connectの呼び出しが遅いことに気付きました。これを繰り返し行うことは非常にコストがかかる可能性が高いです...それとも?

答えて

3

非常に長時間実行されるトランザクションがない限り、実際にトランザクションごとに物理接続を作成して解体すると、コストがかかる可能性があります。トランザクションが100万行のバッチロードである場合、接続のオープンとクローズのコストはおそらくごくわずかです。一方、トランザクションがテーブルへの単一行の挿入で構成されている場合、大部分の時間は接続の開閉に費やされます。

しかし、ほとんどの場合、中間層が接続プールを維持する3層アプリケーションがあり、中間層コードが接続を開いたり閉じたりすると、実際には論理接続で動作しています物理的接続よりも接続を開くと、プールから接続が確立され、ビジネス層がトランザクションを実行した後、接続を閉じるとプールへの接続が返されます。データベースの観点からは、物理的な接続は開いたり閉じたりしません。プールからの接続で実際に作業している場合は、すべてのトランザクションで接続を開いたり閉じたりするのは正常です。接続プールのサイズが合理的であると仮定すれば、オーバーヘッドが多く発生しません。

関連する問題