Экспорт большого объёма данных. Express советы

  Рет қаралды 1,786

Просто о Laravel. CutCode

Просто о Laravel. CutCode

Ай бұрын

Сегодня мы с вами поговорим про генераторы. Классическая проблема, классическая боль для большинства новичков. У нас есть итерация по огромному количеству элементов, плюс с каждым мы производим определенные действия и в итоге уходим в лимит памяти. Давайте посмотрим что с этим можно сделать.
🎁 Для вас есть подарок, забирайте - cutcode.dev/l/4pxn 🎁
#Expressсоветы#laravel#cutcode
---------------------------------------------------------------------------------
🚀📹👨‍🏫 Как насчет прокачки своих навыков с помощью наших обучающих видеокурсов по web-разработке? Переходи на мой сайт 👇
learn.cutcode.dev/?
❗️❗️❗️Присоединяйся к нашему комьюнити в телеграм - там и советом помогут и много интересного - cutcode.dev/l/icwf
---------------------------------------------------------------------------------
📹 делитесь этим видео с друзьями:
• Экспорт большого объём...
🔔 подпишитесь на KZbin-канал: kzbin.info?s...
📼 Курс по Laravel с нуля:
• Курс по Laravel 8 обуч...
Экспорт большого объёма данных. Express советы
---------------------------------------------------------------------------------
🔗 наш сайт: cutcode.dev/?
📱 Наш telegram-канал: t.me/laravel_cutcode

Пікірлер: 52
@ingvarzharov7072
@ingvarzharov7072 Ай бұрын
Рубрика нужна! Лайк!
@cbrwvy
@cbrwvy Ай бұрын
Рубрика класс, давай больше))
@antohagobet4451
@antohagobet4451 Ай бұрын
Однозначно, нужна такая рубрика!
@CutCodeRu
@CutCodeRu Ай бұрын
Принято
@user-ii8ke7jl3t
@user-ii8ke7jl3t Ай бұрын
Интересно, делай еще!
@postrockmore1306
@postrockmore1306 Ай бұрын
Нужна, очень нужна)
@user-yj4fe8gq7i
@user-yj4fe8gq7i Ай бұрын
Быть. Да. Можно даже в плейлист какой-то выделить такое ролики.
@user-ke4uc3mg8g
@user-ke4uc3mg8g Ай бұрын
Рубрика нужна ❤
@kamil19862307
@kamil19862307 Ай бұрын
Конечно нужна такая рубрика!
@undersun6301
@undersun6301 Ай бұрын
Отличный совет, полезный, спасибо. Смотрю все ваши видео, любой длины 😊
@CutCodeRu
@CutCodeRu Ай бұрын
А я все ваши комментарии! Спасибо!
@emsiattax
@emsiattax 15 күн бұрын
однозначно полезная рубрика
@maxmoroz1924
@maxmoroz1924 Ай бұрын
Однозначно, быть!!!
@CutCodeRu
@CutCodeRu Ай бұрын
Принял)
@mister_robot01
@mister_robot01 Ай бұрын
Ждем еще!)
@ZA-Pobedu-RF
@ZA-Pobedu-RF Ай бұрын
Нужна, очень нужна
@gamingplay5415
@gamingplay5415 Ай бұрын
в некоторых случаях вот действительно не хватает наглядного примера решения, вроде и все понятно что пишут как решается но делаешь как пишут не всегда работает из за особенностей компонентов и версий 😂
@Kyrare03
@Kyrare03 11 күн бұрын
На мой взгляд нужно углублять в детали реализации, чтобы понимать, что ларавель делает под капотом метода cursor
@CutCodeRu
@CutCodeRu 11 күн бұрын
На канале уже есть ролик
@gamingplay5415
@gamingplay5415 Ай бұрын
как всегда лайк 👍
@andreigolovaciuc9855
@andreigolovaciuc9855 Ай бұрын
Рублрика нужна, Лайк ставлю)) подписку и колокольчик :D
@user-mi2uw8ro6s
@user-mi2uw8ro6s Ай бұрын
однозначно да
@Pavelbrov
@Pavelbrov Ай бұрын
По архитектуре интересно бы были задачки и решения. Как из лапшекода делать чистый
@CutCodeRu
@CutCodeRu Ай бұрын
Присылайте лапшекод в чат или в личку
@user-ge6pt5lp9u
@user-ge6pt5lp9u Ай бұрын
Вот именно из таких частных случаев и строттся опыт;] когда кипишь над задачей день-другой, и потом осенило.. Рубрика "я понял/всё просто/хозяйке на заметку..." даст буст в просмотрах. Другой момент идеологический - ..я кодил, а кто-то получил скил даром.
@artemkanarskyi8231
@artemkanarskyi8231 Ай бұрын
нужна, давайте теперь Импорт
@CutCodeRu
@CutCodeRu Ай бұрын
😄
@user-en8tg8yb4q
@user-en8tg8yb4q Ай бұрын
Количество использованной памяти уменьшили, но мы так сильно увеличили нагрузку на БД. На каждую запись по 1 запросу - это более 70000 запросов. В некоторых фреймворках есть решение из коробки (Yii2 методы each(), batch() для query билдера). Например: foreach ($queryModels->each(1000) as $model), где 1000 - это количество моделей в одном запросе. Так мы не сильно загружаем БД, и остаёмся в рамках лимита памяти
@CutCodeRu
@CutCodeRu Ай бұрын
запрос то один, мы кроме получения ничего не делаем, а так то что вы пишете в eloquent это метод chunk (лимит офсет)
@lokylainen
@lokylainen Ай бұрын
круто
@user-oj7sn3yj2n
@user-oj7sn3yj2n Ай бұрын
Нужна
@user-fc2pd6ow9e
@user-fc2pd6ow9e 5 күн бұрын
эх... жаль нет полного примера. а если записей 200.000? как поведет система?
@vesh95
@vesh95 Ай бұрын
Если курсор из базы берет по одной записи, то это не эффективно. Лучше использовать ларавелевский batch. Причем стоит посчитать количество памяти на пачку, чтобы брать по максимому, так будет меньше запросов в базу. Если нужно сортировать или аггрегации по всей таблице делать, то это точно быстрее будет. Ещё есть такая фишка, что при softDelete можно добавить индекс с сортировкой по id (или другому молю, по которому сортируется) и в индексе задать условие deleted_at is null или наоборот, если записи удаляются редко, так инварианты отбрасываются + всё заранее отсортировано и уже не всю таблицу приходится сканить. А я пока почитаю про то как работает курсор.
@vesh95
@vesh95 Ай бұрын
Вообще если с большими таблицами приходится работать, то лучше знать сложности алгоритмов, чтобы понимать что вообще может дать explain и как мы пожем что-то поменять, чтобы стало быстрее.
@CutCodeRu
@CutCodeRu Ай бұрын
Метод курсора будет выполнять только один запрос в базе данных; однако отдельные модели Eloquent не будут гидратированы до тех пор, пока они не будут фактически итерированы. Таким образом, только одна модель Eloquent хранится в памяти в любой момент времени во время итерации по курсору. В какой то мере генератор был и не нужен но и решение с chunk тоже имеет место быть
@vesh95
@vesh95 Ай бұрын
​@@CutCodeRu Ну бывают выборки из базы, что и сырой результат базы не помещается. Но есть у меня местечко, где стоит попробовать покурсировать. Если получится и по памяти пройдет, ибо одним запросом всё делается в секунды, а чанками на минуты выходит. Идея хорошая, надо попробовать. Перепутал, да, чанк.
@CutCodeRu
@CutCodeRu Ай бұрын
@@vesh95 напишите потом про опыт с курсором
@vesh95
@vesh95 25 күн бұрын
@@CutCodeRu Попробовал. Было через чанки по 500 сделано, процесс длился 1000 сек на 1.5млн записей (если не ошибся с кол-вом), на той же выборке без чанков с курсором стало 250-100, колебалось от запуска к запуску, но разница четко прочувствовалась. По сути из O(table_iter_time*chuncs_count) в О(table_iter_time) сложность перешла. Однако где использовались связи там это почти не эффективно, только на релейшены больше запросов появляется. Так что на простые выгрузки по одной таблице самое то, а вот с релейшенами посложнее выходит
@user-jq8eh5wd6y
@user-jq8eh5wd6y Ай бұрын
продолжай
@CutCodeRu
@CutCodeRu Ай бұрын
Хорошо)
@inilim
@inilim Ай бұрын
лимит офсет, решают проблему. Генератор не нужен, курсов в принцепе тоже. если только бд на лярд строк
@ForwardDev
@ForwardDev 29 күн бұрын
Дай название рубрике в стиле gist :)
@deniskadet
@deniskadet Ай бұрын
А если применить LazyCollections? Тоже под капотом генератор
@CutCodeRu
@CutCodeRu Ай бұрын
kzbin.info/www/bejne/rJykpIGcm6-SkLssi=U8axkklZQdTTWeO4
@the2x548
@the2x548 Ай бұрын
А я делал очереди для этого
@CutCodeRu
@CutCodeRu Ай бұрын
И правильно делали но это о другом
@lbbMHz
@lbbMHz Ай бұрын
а очереди тут причём?
@yaroslavmakarov2218
@yaroslavmakarov2218 Ай бұрын
ogon
@LuchkinDS
@LuchkinDS Ай бұрын
~71к запросов в базу?
@CutCodeRu
@CutCodeRu Ай бұрын
Записей
LazyCollections и PHP генераторы. Как применять на практике
7:25
Разбор Error Handling в Laravel. Под капотом Laravel
25:50
Просто о Laravel. CutCode
Рет қаралды 2 М.
World’s Deadliest Obstacle Course!
28:25
MrBeast
Рет қаралды 48 МЛН
1 класс vs 11 класс  (игрушка)
00:30
БЕРТ
Рет қаралды 3,5 МЛН
Is it Cake or Fake ? 🍰
00:53
A4
Рет қаралды 17 МЛН
⬅️🤔➡️
00:31
Celine Dept
Рет қаралды 30 МЛН
Как бы я начал учить кодинг сейчас?
12:15
"Проклятие 35 лет" в Программировании
8:04
Миша Ларченко
Рет қаралды 16 М.
Из PHP в Go или как уйти втуда и невернуться
23:36
Дамп чердачины
Рет қаралды 3,3 М.
Interceptors в PHP на примере Spiral framework
25:53
Просто о Laravel. CutCode
Рет қаралды 2,7 М.
ты C++ РАЗРАБОТЧИК?) ага
12:04
Winderton
Рет қаралды 224 М.
Context - globals в овечьей шкуре
5:14
Просто о Laravel. CutCode
Рет қаралды 1,5 М.
World’s Deadliest Obstacle Course!
28:25
MrBeast
Рет қаралды 48 МЛН