У меня есть приложение, которое работает очень быстро.Допустим, для запуска потребовалось 10 секунд.Все, что он делает, это читает CSV, анализирует его и сохраняет некоторую информацию в объектах sqlalchemy, которые записываются в базу данных.(Мы никогда не пытаемся читать базу данных, только для записи).
После добавления отношения многие ко многим к объекту, который мы строим, и привязки его к объекту адреса, который мы сейчас строим, время для обработкиФайл увеличился на порядок.Мы делаем очень мало дополнительной работы: просто создаем экземпляр адреса и сохраняем его в коллекции отношений на нашей сущности, используя append.
Большая часть времени, по-видимому, теряется в _load_for_state
, как видно из прикрепленногоскриншот профилирования: ![enter image description here](https://i.stack.imgur.com/a6h7B.png)
Я почти уверен, что это ненужное потерянное время, потому что похоже, что оно пытается выполнить некоторую загрузку, даже если мы никогда не делаем запросы к базе данных(мы всегда создаем новые объекты и сохраняем их в этом приложении).
У кого-нибудь есть идеи, как оптимизировать sqlalchemy здесь?
update
Iпопытался установить SQLALCHEMY_ECHO = True
просто чтобы посмотреть, выполняет ли он кучу операций чтения из базы данных, или, может быть, какие-то дополнительные записи.Как ни странно, он обращается к самой базе данных только в то же время, что и раньше (после db.session.commit()
).Я уверен, что все это дополнительное время не тратится из-за доступа к базе данных.