Я пытаюсь сделать крупномасштабную вставку в базу данных sqlite с peewee. Я использую atomic
, но производительность все еще ужасна. Я вставляю строки в блоках из 2500 строк, и из-за SQL_MAX_VARIABLE_NUMBER я вставляю около 200 из них за раз. Вот код:peewee с объемной вставкой очень медленно в sqlite db
with helper.db.atomic():
for i in range(0,len(expression_samples),step):
gtd.GeneExpressionRead.insert_many(expression_samples[i:i+step]).execute()
И список expression_samples
приведен список словарей с соответствующими полями для GeneExpressionRead
модели. Я приурочил этот цикл, и для его выполнения требуется от 2 до 8 секунд. У меня есть миллионы строк для вставки, и способ, которым мой код написан сейчас, скорее всего, займет 2 дня. Согласно this post, есть несколько прагм, которые я установил, чтобы улучшить производительность. Это также ничего не меняет для меня, как результат. Наконец, в соответствии с
this test on the peewee github page
должно быть возможно очень быстро вставить много строк (~ 50 000 за 0.3364 секунды), но также кажется, что автор использовал исходный код sql для получения этой производительности. Кто-нибудь мог сделать такую высокоэффективную вставку, используя методы peewee?
Редактировать: Не понял, что тест на странице github peewee был для MySQL
вставок. Может или не может применяться к этой ситуации.
Да, после долгих поисков это в значительной степени то, что я сделал. Спасибо за помощь! – themantalope