2017-08-22 123 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不会有太大困难,但也有使用优势内置的会话池功能。

希望能回答你的问题!