Size: a a a

Django [ru] #STAY HOME

2021 March 13

S

Stepan in Django [ru] #STAY HOME
Vlad Naumov
Ну неужели никто миллион записей в БД не вносил?)
Я по 50к в одном queryset грузил, все было ок.
источник

S

Stepan in Django [ru] #STAY HOME
Stepan
Я по 50к в одном queryset грузил, все было ок.
К одному миллиону имеется ввиду
источник

S

Stepan in Django [ru] #STAY HOME
Stepan
К одному миллиону имеется ввиду
На postgresql
источник

AS

Alexander Shavelev in Django [ru] #STAY HOME
Vlad Naumov
Добрый день, подскажите пожалуйста! Вторую неделю бьюсь с загрузкой 1М строк в БД. Вот основные момент кода: https://codeshare.io/2KVX6X

пытаюсь сделать bulk_create с указанием batch_size, но исхода два: 1. Если большой батч сайз, то заканчивается оперативка и БД вылетает с ошибкой 2. Если батч сайз слишком маленький, то улетает куча запросов в БД + заполнение происходит долго.

Может ли быть проблема в том, что каждая строка, которую я хочу добавить, имеет связанный ForeignKey? Как можно исправить ситуацию?(
> Если батч сайз слишком маленький, то улетает куча запросов в БД + заполнение происходит долго

так запустили бы и я за 2 недели явно загрузилось
источник

E

Enot in Django [ru] #STAY HOME
Есть способ пропихнуть в inner join дополнительное условие?🤔
источник

E

Enot in Django [ru] #STAY HOME
Без RawSQL
источник

VN

Vlad Naumov in Django [ru] #STAY HOME
Alexander Shavelev
> Если батч сайз слишком маленький, то улетает куча запросов в БД + заполнение происходит долго

так запустили бы и я за 2 недели явно загрузилось
Только мне надо 3 раза в день обновлять))
источник

AS

Alexander Shavelev in Django [ru] #STAY HOME
Vlad Naumov
Только мне надо 3 раза в день обновлять))
ну записать 3миллиона в сутки не должно быть проблемой
источник

E

Enot in Django [ru] #STAY HOME
Enot
Есть способ пропихнуть в inner join дополнительное условие?🤔
FilteredRelation не помогло, он делает LEFT OUTER JOIN (даже если уже есть на нужную таблицу  INNER)
источник

E

Enot in Django [ru] #STAY HOME
разобрался
источник

А

Артем in Django [ru] #STAY HOME
Иван Масюк
спасибо! помогло!
не за что
источник

ИМ

Иван Масюк in Django [ru] #STAY HOME
Артем
не за что
Ночь - лучшее время для программиста?)
источник

А

Артем in Django [ru] #STAY HOME
Иван Масюк
Ночь - лучшее время для программиста?)
да не спать скоро пойду, целый день работал, только приехал, встречи дела, работа и т.п., от компа уже глаза болят
источник

AD

Alex Dem in Django [ru] #STAY HOME
Vlad Naumov
Добрый день, подскажите пожалуйста! Вторую неделю бьюсь с загрузкой 1М строк в БД. Вот основные момент кода: https://codeshare.io/2KVX6X

пытаюсь сделать bulk_create с указанием batch_size, но исхода два: 1. Если большой батч сайз, то заканчивается оперативка и БД вылетает с ошибкой 2. Если батч сайз слишком маленький, то улетает куча запросов в БД + заполнение происходит долго.

Может ли быть проблема в том, что каждая строка, которую я хочу добавить, имеет связанный ForeignKey? Как можно исправить ситуацию?(
Я не знаю что делает bulk_create под капотом, возможно как раз тоже самое что я сейчас предложу
Но не пробовал случайно поиграть с транзакциями?
источник

AD

Alex Dem in Django [ru] #STAY HOME
возможно если просто уменьшить количество коммитов, уже станет легче
источник

AD

Alex Dem in Django [ru] #STAY HOME
Дока гласит:

This method inserts the provided list of objects into the database in an efficient manner (generally only 1 query, no matter how many objects there are):

Поэтому и память кончается
Думается мне, стоит попробовать скомбинировать уменьшение количества транзакций и bulk_create
источник

AD

Alex Dem in Django [ru] #STAY HOME
http://stefano.dissegna.me/django-pg-bulk-insert.html

а вот еще статейка, где человек явно "налюбился" с ОРМ и по итогу вернулся к raw SQL :D
источник

AD

Alex Dem in Django [ru] #STAY HOME
Vlad Naumov
Добрый день, подскажите пожалуйста! Вторую неделю бьюсь с загрузкой 1М строк в БД. Вот основные момент кода: https://codeshare.io/2KVX6X

пытаюсь сделать bulk_create с указанием batch_size, но исхода два: 1. Если большой батч сайз, то заканчивается оперативка и БД вылетает с ошибкой 2. Если батч сайз слишком маленький, то улетает куча запросов в БД + заполнение происходит долго.

Может ли быть проблема в том, что каждая строка, которую я хочу добавить, имеет связанный ForeignKey? Как можно исправить ситуацию?(
тут можно почитать о том как сделать банч действий одной транзакцией, проверить мою теорию можно предельно быстро)

https://docs.djangoproject.com/en/3.1/topics/db/transactions/
источник

AD

Alex Dem in Django [ru] #STAY HOME
ну и последнее - посмотри где вообще просадки
SELECT EXPLAIN подскажет
источник

AK

Alexandr K in Django [ru] #STAY HOME
Такс, доброй ночи!

Шарит кто за асинхронность в джанго?

Крч понял как сделать функциональные вьюхи асинхронными, а по class based async views инфы не нашел...
источник