私たちはデータベース接続プール(java JDBC)を持っています。私たちがチェックアウトするたびに、接続例外を避けるためにまず先制的な接続ロールバックを行います。ビジネスケースを無視してください。技術的な観点から見ると、JDBC接続のロールバックはアプリケーションのパフォーマンスに大きな影響を与えますか?Java、JDBC接続プール、JDBC接続ロールバック
答えて
接続プールから直接送られる接続をロールバックする必要がある理由を理解できません。彼らの状態はアイドルでなければなりません。さもなければあなたはプールからそれらを得ることができませんでしたか?
トランザクションはパフォーマンスに影響します。 ロールバックできるトランザクションよりも多いトランザクションがある場合、ダングリングトランザクションがそれらをブロックしているために実行できないクエリが存在する可能性があります。
アプリケーションがタイムクリティカルな場合は、コードを最適化するために時間をかけてください。必要な場所でのみトランザクションを使用してください。
接続ロールバックはありません。おそらく、トランザクションのロールバックを意味するでしょう。トランザクションでデータベースに加えられた変更を失う場合を除き、ロールバックしないでください。トランザクション内のすべての変更をコミットしない限り、コミットしないでください。
私は「接続例外を避けるためにまず先制的な接続ロールバックを行う」という言葉は理解していません。 Connection.rollback()
メソッド呼び出しを指していると仮定すると、悪い習慣とみなされます。実際にはネットワークコールが必要となるため、パフォーマンスが低下し、関連するトランザクションの状態を破棄することになります(このシナリオでは意味がありません)。
接続プールから取得したデッド接続に関する例外を回避する場合は、アプリケーションに接続を戻す前に、接続が古くないかどうか(通常はテストSQL文を実行して)を確認するようプールを構成する必要があります。アプリケーションが接続を取得すると、接続が不要になった後に接続を維持する必要はありません。アプリケーションは理想的には接続をプールに戻す必要があります。接続オブジェクトの周囲に物理的な接続が残っている場合は、他の要求で使用できず、特定の期間を超えて接続された接続を閉じるように構成されたファイアウォールによって実際に閉じられます。
完全にマナに同意します。
プールから接続を「チェックアウト」してから作業してからプールに戻します。
JBoss Connection Poolingロジックを見てみるか、プロダクショングレードの接続プールパッケージを参照してください。
での議論は、プールからの接続を検証するための適切な方法はvalidation queryを使用することであります。プールに返された「汚れた」接続がある可能性があるため、ロールバックがある場合は、real resource management frameworkを使用する必要があります。
- 1. JDBC接続プール
- 2. JDBC接続プール
- 3. TomcatとJDBC接続プール
- 4. JTA対応JDBC接続プール
- 5. Java JDBC接続
- 6. JDBC接続プールの作成方法は?
- 7. Hive JDBC接続をプールするベストプラクティス
- 8. sybase用のjdbc接続プールの設定
- 9. GlassfishのJDBC接続プールpingエラー
- 10. Jdbc接続プール(ユーザー名別接続キャッシュあり)
- 11. JDBC:接続を共有または接続プールを使用
- 12. Java - Jdbc接続スローNullPointerException
- 13. JavaのJDBC接続状態
- 14. JAVA JDBC再利用接続
- 15. JDBCスパーク接続
- 16. JDBCリセット接続
- 17. 接続JDBC
- 18. JDBC接続リーク
- 19. JDBCシン接続
- 20. エラー接続JDBC
- 21. AQ使用時のJDBCプールでのJDBC接続リーク
- 22. JDBCリソースとJDBC接続プールを取り巻く混乱Glassfish
- 23. アンドロイドjdbc odbc接続
- 24. JDBC接続のインターセプト
- 25. SQL Server - JDBC接続
- 26. JDBC接続close conecpt
- 27. Kafka接続JDBCコネクタ
- 28. hive jdbc接続タイムアウト
- 29. JDBC接続スローSocketException
- 30. Hive JDBC接続NoClassDefFoundError