Оптимизация кода, грамотность кода
Столкнулся с проблемой, проект резко развернули в сторону Биг Дата, на вход стали приходить массивы весами >300МБ и мягко говоря на вебе, таблицы стали загружаться более затруднительно, но все же они загружаются, беда в другом, функционал позволяет сохранять все эти данные в БД в формате JSON (array), чтобы потом можно было их так-же отобразить в табличке. Собственно момент с сохранением и вызывает трудности. Я грубо говоря делаю foreach по всем данным, передаю в PHP (o_O), там произвожу манипуляции с группировками и прочие действия, по итогу результат преобразований передаю в модель с updateOrCreate (Laravel) таблички, чтобы заполнить одну колонку данными. Сохранение с базу 2к строк занимает 2.4 секунды, но при 10к строк мы ложимся на лопатки со словами BadGateway502, сеть перегружена напрочь. Не верю чтобы разного рода сортировка данных в PHP занимает уйму времени и сожрала всю память (set_time_limit стоит 0, memory_limit стоит -1). Может мне стоит производить все работы с сортировкой данных на стороне клиента, а в insert передавать готовый гигантский массив? Как можно оптимизировать (реструктуризировать) код чтобы обработать такой объем данных ? Прошу помощи, может кто бы сталкивался с подобными объемами
Ответы (1 шт):
Тяжелые задачи выполняйте ассинхронно или на кроне. Не заставляйте клиента ждать.
В зависимости от целей использования данных возможно нужно переходить на другую СУБД колоночную (например ClickHouse) или NoSql (например MongoDb).