2017-08-22 20 views
0

私はJavaのバックグラウンドから来ており、Oracleで接続プーリング用のJava APIが表示されたときに、oracleドライバ自体が接続プーリングを提供します。しかしcx_Oracleの場合は、threaded=trueを含めるか、SessionPoolingを使用するオプションのみが表示されます。cx_Oracle接続プール

現在、threaded-trueオプションを使用します。しかし、私はこのオプションでどのくらいの並行性を得ることができるのかよくわかりません。これは本当に接続プールですか、これを行う別の方法がありますか?

cx_Oracleドキュメントは言う:。

「ネジ付き引数は、ミューテックスと接続にアクセスし、Oracleがラップする必要があるかどうかを示すブール式であることが期待されるシングルスレッドアプリケーションではそうすることで、パフォーマンスを課し約10-15%のペナルティがあり、これがデフォルトはFalseです。 "

cx_Oracleには、セッションプールではなく接続プールを設定するにはどうすればよいですか。両方ともオラクルの権利が異なるからですか?

ありがとうあなたの時間とアドバイスをしてください。

答えて

0

Oracle OCI docでは、接続プーリングとセッションプーリングをいつ使用するかについての議論がいくつかあります。ステートレス接続(おそらくより一般的なケース)について

は、セッション・プールを使用する:

  • すべてのセッションプール管理は、OCIによって処理されます。

  • パフォーマンス向上のため、ランタイムロードバランシング(RLB)イベントとの統合。

  • 可用性を向上させるためにFANイベントとアプリケーション継続性との統合。

  • スケーラビリティの向上のためDRCPとの統合。

0

cx_Oracleは、接続プールをサポートしていません(session poolsのみ)。 threaded = Trueオプションは、アプリケーションで並行処理を使用する予定があり、セッションプールの使用とは関係がない場合にのみ必要です。特に、データベースが必要とする時間がPython自体のデータを処理するのに必要な時間を大幅に上回っている場合は、この手法でかなり合理的な並行性を得ることができます。

Chrisが述べたように、あまりにも難なくPythonで「独自の」接続プールをロールすることはできますが、組み込みのセッションプール機能を使用する利点があります。

あなたの質問にお答えします。