2009-06-30 7 views
4

OraclePreparedStatementのexecuteQuery()がシリアル化を示しています。つまり、同じ接続を使用してOracleデータベースに対して同時に実行する2つのクエリがあります。ただし、OraclePreparedStatementは、並行問合せを明示的に禁止しているようです。指定されたJDBC接続の同時クエリ?

私の質問は:このシリアル化は、同じ接続で両方のクエリを実行するために必要なアーティファクトか、これは設定可能ですか?

私は、2つのクエリの実行中にreadOnlyをtrueに設定しようとしましたが、それでもそれらはシリアル化されています。

答えて

4

私はOracleのConnectionクラスのメソッドが同期していると信じています。このapi descriptionを参照してください。これは、構成可能なプロパティではなく、同じ接続を使用することの成果物になります。この制限を回避する必要がある場合は、2つの接続を使用するか、より柔軟なソリューションが必要な場合は接続プールを調べることができます。

+0

ありがとうございました。両方のスレッドがプールから同じ接続を使用しています。テンポラリテーブルの使用を避けるためには少し再作業が必要なので、私はその道を行く前に簡単な解決策を望んでいました。 –

+1

これが当てはまる場合は、プールの設計を再検討することができます。プールは、現在使用中の接続を提供すべきではありません。 – akf

+0

それはありません。私は約8つのクエリを順番に発行する、長時間実行している作業をやり直しています。 2つのスレッドを同時に実行できるので、2つのスレッドを同時に2つ実行して、同じ接続にクエリを渡していました。コードは2つの接続を取得するので、各スレッドは独自の接続を持ちます。チャンピオンのように動作します。 –

関連する問題