У меня простая задача. Прочитайте данные из mysql → выполните некоторую операцию (не очень тяжелую) → затем обновите результат в mysql DB. С 20 различными таблицами в базе данных (~ 600000 строк каждая).
Я написал скрипт python, используя ThreadPoolExecutor(max_workers=20)
чтобы оптимизировать общее время выполнения, но занимает около 40 часов. Я хочу оптимизировать его для следующего запуска.
Я пытался запустить несколько экземпляров кода, но производительность не очень значительна. Есть ли лучший подход к быстрому выполнению задачи, например, распределенный код или что-то, о чем кто-либо знает?
Минималистский алгоритм кода
conn.autocommit = True
ThreadPoolExecutor(max_workers=20)
Самый быстрый способ - создавать вставки и фиксировать каждые несколько тысяч строк. Напишите все в файл. Удаление индексов загружает данные с помощью клиента mysql и индекса creata. Оптимизируйте сервер для массовых операций.
Параллельность в Python НЕ работает. Параллелизм в python не работает правильно
LOAD DATA INFILE
быстрый способ импортировать данные с MySQL - это использовать LOAD DATA INFILE
dev.mysql.com/doc/refman/5.7/en/load-data.html.
LOAD DATA INFILE
раньше, но я не уверен, что это подходящий вариант использования здесь. К тому времени, когда я запишу данные в файл, я смогу записать в базу данных напрямую, только мои мысли.