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

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

Пікірлер: 51

  • @ingvarzharov7072
    @ingvarzharov707226 күн бұрын

    Рубрика нужна! Лайк!

  • @antohagobet4451
    @antohagobet445126 күн бұрын

    Однозначно, нужна такая рубрика!

  • @CutCodeRu

    @CutCodeRu

    26 күн бұрын

    Принято

  • @user-ke4uc3mg8g
    @user-ke4uc3mg8g26 күн бұрын

    Рубрика нужна ❤

  • @user-yj4fe8gq7i
    @user-yj4fe8gq7i25 күн бұрын

    Быть. Да. Можно даже в плейлист какой-то выделить такое ролики.

  • @cbrwvy
    @cbrwvy25 күн бұрын

    Рубрика класс, давай больше))

  • @user-ii8ke7jl3t
    @user-ii8ke7jl3t25 күн бұрын

    Интересно, делай еще!

  • @kamil19862307
    @kamil1986230726 күн бұрын

    Конечно нужна такая рубрика!

  • @postrockmore1306
    @postrockmore130625 күн бұрын

    Нужна, очень нужна)

  • @andreigolovaciuc9855
    @andreigolovaciuc985526 күн бұрын

    Рублрика нужна, Лайк ставлю)) подписку и колокольчик :D

  • @maxmoroz1924
    @maxmoroz192426 күн бұрын

    Однозначно, быть!!!

  • @CutCodeRu

    @CutCodeRu

    26 күн бұрын

    Принял)

  • @undersun6301
    @undersun630125 күн бұрын

    Отличный совет, полезный, спасибо. Смотрю все ваши видео, любой длины 😊

  • @CutCodeRu

    @CutCodeRu

    25 күн бұрын

    А я все ваши комментарии! Спасибо!

  • @emsiattax
    @emsiattax7 күн бұрын

    однозначно полезная рубрика

  • @mister_robot01
    @mister_robot0126 күн бұрын

    Ждем еще!)

  • @Kyrare03
    @Kyrare033 күн бұрын

    На мой взгляд нужно углублять в детали реализации, чтобы понимать, что ларавель делает под капотом метода cursor

  • @CutCodeRu

    @CutCodeRu

    3 күн бұрын

    На канале уже есть ролик

  • @ZA-Pobedu-RF
    @ZA-Pobedu-RF25 күн бұрын

    Нужна, очень нужна

  • @gamingplay5415
    @gamingplay541526 күн бұрын

    как всегда лайк 👍

  • @user-mi2uw8ro6s
    @user-mi2uw8ro6s24 күн бұрын

    однозначно да

  • @gamingplay5415
    @gamingplay541526 күн бұрын

    в некоторых случаях вот действительно не хватает наглядного примера решения, вроде и все понятно что пишут как решается но делаешь как пишут не всегда работает из за особенностей компонентов и версий 😂

  • @Pavelbrov
    @Pavelbrov26 күн бұрын

    По архитектуре интересно бы были задачки и решения. Как из лапшекода делать чистый

  • @CutCodeRu

    @CutCodeRu

    26 күн бұрын

    Присылайте лапшекод в чат или в личку

  • @user-en8tg8yb4q
    @user-en8tg8yb4q25 күн бұрын

    Количество использованной памяти уменьшили, но мы так сильно увеличили нагрузку на БД. На каждую запись по 1 запросу - это более 70000 запросов. В некоторых фреймворках есть решение из коробки (Yii2 методы each(), batch() для query билдера). Например: foreach ($queryModels->each(1000) as $model), где 1000 - это количество моделей в одном запросе. Так мы не сильно загружаем БД, и остаёмся в рамках лимита памяти

  • @CutCodeRu

    @CutCodeRu

    25 күн бұрын

    запрос то один, мы кроме получения ничего не делаем, а так то что вы пишете в eloquent это метод chunk (лимит офсет)

  • @lokylainen
    @lokylainen26 күн бұрын

    круто

  • @artemkanarskyi8231
    @artemkanarskyi823126 күн бұрын

    нужна, давайте теперь Импорт

  • @CutCodeRu

    @CutCodeRu

    26 күн бұрын

    😄

  • @user-ge6pt5lp9u
    @user-ge6pt5lp9u25 күн бұрын

    Вот именно из таких частных случаев и строттся опыт;] когда кипишь над задачей день-другой, и потом осенило.. Рубрика "я понял/всё просто/хозяйке на заметку..." даст буст в просмотрах. Другой момент идеологический - ..я кодил, а кто-то получил скил даром.

  • @user-jq8eh5wd6y
    @user-jq8eh5wd6y26 күн бұрын

    продолжай

  • @CutCodeRu

    @CutCodeRu

    26 күн бұрын

    Хорошо)

  • @user-oj7sn3yj2n
    @user-oj7sn3yj2n25 күн бұрын

    Нужна

  • @ForwardDev
    @ForwardDev21 күн бұрын

    Дай название рубрике в стиле gist :)

  • @vesh95
    @vesh9523 күн бұрын

    Если курсор из базы берет по одной записи, то это не эффективно. Лучше использовать ларавелевский batch. Причем стоит посчитать количество памяти на пачку, чтобы брать по максимому, так будет меньше запросов в базу. Если нужно сортировать или аггрегации по всей таблице делать, то это точно быстрее будет. Ещё есть такая фишка, что при softDelete можно добавить индекс с сортировкой по id (или другому молю, по которому сортируется) и в индексе задать условие deleted_at is null или наоборот, если записи удаляются редко, так инварианты отбрасываются + всё заранее отсортировано и уже не всю таблицу приходится сканить. А я пока почитаю про то как работает курсор.

  • @vesh95

    @vesh95

    23 күн бұрын

    Вообще если с большими таблицами приходится работать, то лучше знать сложности алгоритмов, чтобы понимать что вообще может дать explain и как мы пожем что-то поменять, чтобы стало быстрее.

  • @CutCodeRu

    @CutCodeRu

    23 күн бұрын

    Метод курсора будет выполнять только один запрос в базе данных; однако отдельные модели Eloquent не будут гидратированы до тех пор, пока они не будут фактически итерированы. Таким образом, только одна модель Eloquent хранится в памяти в любой момент времени во время итерации по курсору. В какой то мере генератор был и не нужен но и решение с chunk тоже имеет место быть

  • @vesh95

    @vesh95

    23 күн бұрын

    ​@@CutCodeRu Ну бывают выборки из базы, что и сырой результат базы не помещается. Но есть у меня местечко, где стоит попробовать покурсировать. Если получится и по памяти пройдет, ибо одним запросом всё делается в секунды, а чанками на минуты выходит. Идея хорошая, надо попробовать. Перепутал, да, чанк.

  • @CutCodeRu

    @CutCodeRu

    23 күн бұрын

    @@vesh95 напишите потом про опыт с курсором

  • @vesh95

    @vesh95

    18 күн бұрын

    @@CutCodeRu Попробовал. Было через чанки по 500 сделано, процесс длился 1000 сек на 1.5млн записей (если не ошибся с кол-вом), на той же выборке без чанков с курсором стало 250-100, колебалось от запуска к запуску, но разница четко прочувствовалась. По сути из O(table_iter_time*chuncs_count) в О(table_iter_time) сложность перешла. Однако где использовались связи там это почти не эффективно, только на релейшены больше запросов появляется. Так что на простые выгрузки по одной таблице самое то, а вот с релейшенами посложнее выходит

  • @deniskadet
    @deniskadet25 күн бұрын

    А если применить LazyCollections? Тоже под капотом генератор

  • @CutCodeRu

    @CutCodeRu

    25 күн бұрын

    kzread.info/dash/bejne/qJ911bCflq3Firw.htmlsi=U8axkklZQdTTWeO4

  • @inilim
    @inilim26 күн бұрын

    лимит офсет, решают проблему. Генератор не нужен, курсов в принцепе тоже. если только бд на лярд строк

  • @the2x548
    @the2x54826 күн бұрын

    А я делал очереди для этого

  • @CutCodeRu

    @CutCodeRu

    26 күн бұрын

    И правильно делали но это о другом

  • @lbbMHz

    @lbbMHz

    26 күн бұрын

    а очереди тут причём?

  • @yaroslavmakarov2218
    @yaroslavmakarov221826 күн бұрын

    ogon

  • @LuchkinDS
    @LuchkinDS26 күн бұрын

    ~71к запросов в базу?

  • @CutCodeRu

    @CutCodeRu

    26 күн бұрын

    Записей