2

現在、一部のコードを最適化しようとしていますが、各トランザクションの前に接続が行われ、トランザクションの最後に切断が呼び出されていることに気付きました。

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

4

1 に答える 1

3

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

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

于 2012-04-11T20:09:09.310 に答える