python-3.x - 多个光标与多个连接
问题描述
我正在用 Python 构建一个自动化,它从数据库表中获取一些数据并填充一个 Excel 表。我正在使用 cx_Oracle 模块来建立连接。大约有 44 个查询,每个查询获取大约 200 万行数据,这使得该脚本运行了一个小时。所以我打算使用线程模块来加速这个过程。虽然我很困惑是使用多个连接(大约 4 个)还是使用更少的连接(比如 2 个)和每个连接多个游标。
查询彼此独立。它们是select
获取数据的语句,不会以任何方式操作表。
我只需要使用这两种方法的一些优点和缺点,以便我可以决定如何处理脚本。我尝试了很多搜索,但奇怪的是我根本找不到任何相关的信息。如果您将我指向任何类型的博客文章,即使这样也会非常有帮助。谢谢。
解决方案
Oracle 连接一次只能做一件事。具体来说,虽然一个数据库会话在任何时候都可以有多个打开的游标,但它只能执行其中一个。
因此,通过在单个连接中使用多个游标,您不会看到任何改进。
也就是说,根据瓶颈,您可能也看不到使用多个连接的任何改进。在返回数据、磁盘访问等方面可能会阻塞带宽。如果您可以以保持线程/连接数可变的方式进行编码,那么您可以进行调整,直到找到最佳结果。
推荐阅读
- azure-devops - Azure-DevOps:Azure Pipeline 中的自动递增 docker 标签
- recaptcha - Recaptcha v3 徽章未显示(framework7)
- python - Pyppeteer 浏览器在 heroku 中意外关闭
- javascript - 什么时候用加号(+)而不是 %20 对 URL 进行编码?
- python - matplotlib python,如何设置不同颜色和名称的不同块
- javascript - jQuery $("img").click 不适用于动态制作的图像网格
- mysql - 使用 MyISAM 引擎在临时表上使用 MySQL 二级索引的结果不正确
- c - CS50 拼写器(所有单词拼写错误)
- c# - 如何使用Stringbuilder将多个Listview Item插入sqldatabase?
- node.js - 如何根据 Sequelize(postgres) 中 JSONB Array 的属性删除资源?