У меня есть миллионы записей в базе данных, и я хочу прочитать их через 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.
Спасибо за внимание. Я делаю запрос к инструменту виртуализации с именем DENODO. Я заметил одну странную вещь: когда я запускаю простой запрос select * from table, это занимает столько же времени, сколько занимает мой потоковый запрос (упоминание в реальной проблеме). Я до сих пор не уверен, почему это происходит. Я создал разные соединения jdbc для каждого потока.
Многопоточность можно использовать только в том случае, если базовое ядро базы данных поддерживает ее. Вы должны проверить это. По вашему вопросу, я думаю, вам поможет прикрепленная ссылка: видеть это Если ответ поможет вам, помогите сообществу, выбрав его как лучший ответ.
Спасибо за внимание. Я делаю запрос к инструменту виртуализации с именем DENODO. Я заметил одну странную вещь: когда я запускаю простой запрос select * from table, это занимает столько же времени, сколько занимает мой потоковый запрос (упоминание в реальной проблеме). Я до сих пор не уверен, почему это происходит. Я создал разные соединения jdbc для каждого потока.
Мне помогла ссылка ниже Многопроцессорность с JDBC-соединением и пулом Я могу получить около 25% прибыли на моей локальной машине.
Это может помочь – stackoverflow.com/questions/49658348/…