Почему операция сопоставления массовых обновлений SQLAlchemy может быть медленной? - PullRequest
0 голосов
/ 06 марта 2019

У меня есть работа ETL, где я массово обновляю около 150 тыс. Строк. bulk_update_mappings работает около 90 минут:

session.bulk_update_mappings(cls, object_list)

Здесь session имеет autocommit, установленный на False. Я подозреваю, что это связано с тем, как SQLAlchemy работает с None s в словарях, поэтому я хотел бы понять, как готовятся UPDATE s.

  • Как None обрабатываются в отображениях?
  • Существует ли несколько UPDATE, выданных на основе ненулевых комбинаций столбцов?
  • Поможет ли мне упорядочить объекты, основанные на том, какие столбцы равны нулю?
  • Поможет ли обновление в чанках?
  • Было бы быстрее просто обновить те, которые действительно должны быть обновлены, то есть сначала получить данные, сравнить и обновить?

Я использую Python 3.6 с SQLAlchemy 1.3.0. Спасибо за предложения!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...