Multiprocessing/multithreading 用于 Python 中的数据库查询
Multiprocessing/multithreading for database query in Python
我在数据库中有数百万条记录,我想通过 Python 读取它并将其存储在 pandas 数据框中。
问题是 select 查询处理时间非常长。
为了减少查询处理时间,我尝试对其执行多线程
我创建了 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 connection
只有当基础数据库引擎支持时,您才能使用 multi-threading。你应该检查一下。对于你的问题,我认为附件link会对你有所帮助:
如果答案对您有帮助,请将其选为最佳答案以帮助社区。
下面link对我有帮助
Multiprocessing with JDBC connection and pooling
我的 local.machine.
可以获得大约 25% 的收益
我在数据库中有数百万条记录,我想通过 Python 读取它并将其存储在 pandas 数据框中。 问题是 select 查询处理时间非常长。 为了减少查询处理时间,我尝试对其执行多线程 我创建了 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 connection
只有当基础数据库引擎支持时,您才能使用 multi-threading。你应该检查一下。对于你的问题,我认为附件link会对你有所帮助:
下面link对我有帮助 Multiprocessing with JDBC connection and pooling 我的 local.machine.
可以获得大约 25% 的收益