2016-04-28 17 views
2

私は約number of concurrent transaction per connectionを読んでいます。接続あたりのPostgres同時トランザクション

私はjdbc.postgresql.org/documentation/91/threadに出くわしました。

スレッドが別のスレッドを使用している間にスレッドを使用しようとすると、他のスレッドが現在の操作を終了するまで待機します。

start transaction 
Read query 
sleep for 2 min 
commit transaction 

その後、他のスレッドが任意のクエリを実行できないようにする必要があり:私は1つの接続(cp03を使用して) の接続プールを持っていると私は1つのスレッドであれば上記に基づいて

最初のスレッドがトランザクションを完了するまで...右か?

しかし、それはなぜ最初のスレッドが

を寝ている​​間に私の観察では、私は他のスレッド完全なトランザクションを持つことができましたか?私は何が欠けていますか?

EDIT: CP03構成:

 <property name="hibernate.connection.provider_class" value="org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider" />            
     <property name="hibernate.generate_statistics" value="false" /> 
     <property name="hibernate.c3p0.max_size" value="1" /> 
     <property name="hibernate.c3p0.min_size" value="0" /> 
     <property name="hibernate.c3p0.acquire_increment" value="1" /> 
     <property name="hibernate.c3p0.idle_test_period" value="300" /> 
     <property name="hibernate.c3p0.max_statements" value="0" /> 
     <property name="hibernate.c3p0.timeout" value="100" /> 
+0

あなたのcp03設定を投稿してほしい –

+0

@ScaryWombatは設定を追加しました – Bhuvan

答えて

0

ここでのキーワードはwaitです。ロックがあると、waitが発生し、ロックを保持するスレッドはsleepまたはyieldになります。もう一方のスレッドは接続を利用できます。

関連する問題