【问题标题】:Multiprocessing/multithreading for database query in PythonPython中数据库查询的多处理/多线程
【发布时间】:2019-06-02 03:19:10
【问题描述】:

我在数据库中有数百万条记录,我想通过 Python 读取它并将其存储在 pandas 数据框中。 问题是选择查询处理时间非常长。 为了减少查询处理时间,我尝试对其执行多线程 我创建了 3 个线程并根据每个线程进行查询,例如

Select * from ( select *,rownum over (order by col1) rn from table) where rn%3=0 


Select * from ( select *,rownum over (order by col1) rn from table) where rn%3=1


Select * from ( select *,rownum over (order by col1) rn from table) where rn%3=2

然后我通过线程包在 Python 中使用线程运行每个查询。

但它也没有减少多少时间

我可以采取任何其他方法来减少查询阅读时间。 注意-我同时使用了 jdbc 和 odbc 连接

【问题讨论】:

  • 这可能会有所帮助 - stackoverflow.com/questions/49658348/…
  • 感谢您的调查。我正在查询一个名为 DENODO 的虚拟化工具。我注意到一件奇怪的事情,当我运行简单查询 select * from table 时,我的线程查询(在实际问题中提到)所花费的时间相同。我仍然不确定为什么会这样。我为每个线程创建了不同的 jdbc 连接。

标签: python multithreading pandas denodo


【解决方案1】:

以下链接帮助了我 Multiprocessing with JDBC connection and pooling 我可以在我的 local.machine 上获得大约 25% 的收益。

【讨论】:

    【解决方案2】:

    只有当底层数据库引擎支持时,您才能使用多线程。你应该检查一下。对于您的问题,我认为随附的链接将对您有所帮助: see this 如果答案对您有帮助,则选择它作为最佳答案来帮助社区。​​p>

    【讨论】:

    • 感谢您的调查。我正在查询一个名为 DENODO 的虚拟化工具。我注意到一件奇怪的事情,当我运行简单查询 select * from table 时,我的线程查询(在实际问题中提到)所花费的时间相同。我仍然不确定为什么会这样。我为每个线程创建了不同的 jdbc 连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多