Многопроцессорность/многопоточность для запросов к базе данных в Python

У меня есть миллионы записей в базе данных, и я хочу прочитать их через 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/…

Underoos 31.05.2019 07:14

Спасибо за внимание. Я делаю запрос к инструменту виртуализации с именем DENODO. Я заметил одну странную вещь: когда я запускаю простой запрос select * from table, это занимает столько же времени, сколько занимает мой потоковый запрос (упоминание в реальной проблеме). Я до сих пор не уверен, почему это происходит. Я создал разные соединения jdbc для каждого потока.

rishi kumar agarwal 31.05.2019 19:08
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
3 009
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Многопоточность можно использовать только в том случае, если базовое ядро ​​базы данных поддерживает ее. Вы должны проверить это. По вашему вопросу, я думаю, вам поможет прикрепленная ссылка: видеть это Если ответ поможет вам, помогите сообществу, выбрав его как лучший ответ.

Спасибо за внимание. Я делаю запрос к инструменту виртуализации с именем DENODO. Я заметил одну странную вещь: когда я запускаю простой запрос select * from table, это занимает столько же времени, сколько занимает мой потоковый запрос (упоминание в реальной проблеме). Я до сих пор не уверен, почему это происходит. Я создал разные соединения jdbc для каждого потока.

rishi kumar agarwal 31.05.2019 19:04
Ответ принят как подходящий

Мне помогла ссылка ниже Многопроцессорность с JDBC-соединением и пулом Я могу получить около 25% прибыли на моей локальной машине.

Другие вопросы по теме