Hibernateフレームワーク(スプリングなし)を備えたJavaアプリケーションがMySQL DBに接続し、c3p0を介して接続プールを管理しています
スレーブ データベースから読み取り、マスター データベースに書き込むようにアプリケーションを構成しようとしています。マスター/スレーブのロード バランスを拡張するには、このリンクをたどっています。
アプリケーションがすでにプール内の接続を使用してセッションを取得しており、このように読み取り専用メソッドを実行する必要があるとします。
public someReadOnlyMethod()
{
Session session = (get session from current Thread)
//set read-only so that it read from slave db
session.connection().setReadOnly(true);
(...connect to db to do something...)
//set it back in case of this method is followed by write method so that it go to master db
session.connection().setReadOnly(false);
}
プーリングは、読み取り専用および書き込み操作のために db に 2 回接続するための新しい接続を作成しますか (そうであれば、これはパフォーマンスに大きな影響を与えます)、または操作を既存の読み取り専用および書き込み可能な接続プールにスワップするのに十分スマートですか?
アドバイスありがとうございます。