首页 > 解决方案 > 多个光标与多个连接

问题描述

我正在用 Python 构建一个自动化,它从数据库表中获取一些数据并填充一个 Excel 表。我正在使用 cx_Oracle 模块来建立连接。大约有 44 个查询,每个查询获取大约 200 万行数据,这使得该脚本运行了一个小时。所以我打算使用线程模块来加速这个过程。虽然我很困惑是使用多个连接(大约 4 个)还是使用更少的连接(比如 2 个)和每个连接多个游标。

查询彼此独立。它们是select获取数据的语句,不会以任何方式操作表。

我只需要使用这两种方法的一些优点和缺点,以便我可以决定如何处理脚本。我尝试了很多搜索,但奇怪的是我根本找不到任何相关的信息。如果您将我指向任何类型的博客文章,即使这样也会非常有帮助。谢谢。

标签: python-3.xoraclecx-oracle

解决方案


Oracle 连接一次只能做一件事。具体来说,虽然一个数据库会话在任何时候都可以有多个打开的游标,但它只能执行其中一个。

因此,通过在单个连接中使用多个游标,您不会看到任何改进。

也就是说,根据瓶颈,您可能也看不到使用多个连接的任何改进。在返回数据、磁盘访问等方面可能会阻塞带宽。如果您可以以保持线程/连接数可变的方式进行编码,那么您可以进行调整,直到找到最佳结果。


推荐阅读