От реверс-инжинеринга баша реально болит голова. Мне кажется что если переписать его на Python или Go - то было-бы как-то веселее. Автор а расскажи что он вообще делает. То что перименовывает - это понятно. Но почему так хитрО?
В школе на уроках информатики у нас были какие-то ПК семейства толи Корвет толи БК я уже не помню. И там на клавиатуре всместо $ был странный символ который мы называли "блоха".
Автор как всегда не указал тип DBMS который на самом деле используется. Дело в том что оператор UPSERT (update + insert) имеет разные реализации в разных коммерческих системах. По синтаксису разные. Поэтому обсуждать в обобщенном SQL это безсмысленно. Но если-бы это был Oracle то я-бы предложил использовать MERGE https://docs.oracle.com/database/121/SQLRF/stateme... а для Postgres там другая форма синтаксиса.
Отвечая на вопрос перепишет или добавит - зависит от опции ON CONFLICT или ON MATCHED и от функций которы будут указаны в кейсах.
Надо пойти от проблемы. Если проблема - медленно идут данные из базы - то вряд-ли вы ее ускорите добавлением еще большего числа читателей. Может база слабенькая. Задыхается от других процессов. Может сетевой канал вы уже вычерпали и запуск еще большего числа соединений не улучшит ситуацию.
Просто вопрос прозвучал так - я бы хотел проходить через многопоточность ... а это не тот мотиватор который должен был бы быть.
P.S. Если база поддерживает partitioning - попробуйте читать одну большую таблицу параллельно независимыми кусками. Например разбив по датам. По годам. Если partitioning был таков.
Вы не проверяете status_code после того как сделали get response = requests.get(url, params=params)
Там скорее всего лезет 404 Not Found и надо как-то вести учет числа таких ошибок да и вообще в логике
парсера надо учитывать.
Максим Абросимов, может эти 500 мб это и есть минимальный футпринт для node-приложений?
Не знаю. Эту проблему можно решать просто последовательно отбрасывая функционал. Тоесть для начала сделать node - main приложение которое ничего не делает. Печатает в консоли "OK! и стоит на паузе". И еще раз промониторить память. Потом сделать 1 коннекшен к БД. И так далее.