Запись в ту же таблицу SQL при использовании многопоточной задачи: проблемы с производительностью - PullRequest
0 голосов
/ 21 января 2020

У меня есть многопоточная задача (реализация python 3.6), которая каждое утро загружает данные для каждого присутствующего пользователя, вычисляет вещи и затем записывает результаты в те же наборы SQL таблиц (postgresql 9.5). часть записи занимает много времени, и я бы хотел, чтобы она была значительно сокращена (SQL таблицы пока не имеют индексов). Код разработан так, что каждый пользователь обрабатывается независимо, но база данных одинакова.

Я был бы в порядке, чтобы перейти к нет-1012 * БД (думая AWS s3), а затем найти решение, чтобы затем вывести схему для поперечной работы. Основная цель состоит в том, чтобы использовать эти данные - однопользовательский режим - в веб-приложении (подумайте, заполните панель инструментов). Но переход к этому решению потребует значительной работы по настройке, и я даже не уверен, что это лучшее решение, поскольку я новичок в этой инфраструктуре (пребывание в SQL очень помогло бы).

некоторые данные что @steve указал на отсутствие: (1) для каждого пользователя я удаляю его предыдущие данные из каждой таблицы и вставляю приблизительно ~ 10000 записей, разбитых по разным таблицам (2) я загружаю данные из других SQL таблиц (разных БД), но время несущественно (3) я использую старую версию postgresql просто потому, что у нас остался какой-то старый код, который, я был не уверен, запустился бы в новой версии (4) всем пользователям требуется ~ 40 минут для завершения, увеличивая с каждым днем, когда у нас появляется больше пользователей [и по деловым причинам мы абсолютно должны сократить это время] (5) задача структурирована таким образом, что загрузка данных (5% времени), вычисление (30% времени, масштабирование хорошо), удаление и вставка (65%). (6) вставка находится в «массовом режиме» относительно каждой таблицы и пользователя (а также удаляет)

Есть предложения?

...