2017-08-22 166 views
0

我來自java背景,當我在oracle中看到用於連接池的java api時,oracle驅動程序本身提供連接池。但在cx_Oracle的情況下,我只能看到包含threaded=true或使用SessionPooling的選項。cx_Oracle連接池

目前我將使用線程 - 真正的選項。但我不確定使用此選項可以獲得多少併發性。這是真正的連接池還是有另一種方法來完成這項工作。

cx_Oracle文檔說:

「的帶螺紋的參數預計是一個布爾表達式,其指示甲骨文是否應當包訪問連接與互斥在單線程應用這樣做施加了性能大約10-15%的罰款,這就是爲什麼默認爲False。「

我們該如何配置cx_Oracle有一個連接池,而不是一個sessionpool。因爲這兩者在oracle中有所不同?

謝謝你的時間和建議。

回答

0

有關於何時使用連接池VS在Oracle OCI doc會話池的一些討論點。

對於無狀態的連接(可以說是更常見的情況),使用會話池:

  • 所有會話池管理由OCI處理。

  • 集成運行時負載平衡(RLB)活動獲得更好的性能。

  • 集成FAN事件和應用連續性更好的可用性。

  • 與DRCP集成了更好的可伸縮性。

0

cx_Oracle不支持連接池,僅限於session pools。如果您計劃在您的應用程序中使用併發性並且與使用會話池無關,那麼只需要threaded = True選項。使用這種技術可以獲得相當合理的併發性,尤其是在數據庫所需時間遠遠超過在Python本身中處理數據所需時間的情況下。

正如克里斯提到的,你可以在「滾你自己的」連接池,以及在Python不會有太大困難,但也有使用優勢內置的會話池功能。

希望能回答你的問題!