Задать вопрос

Как организовать математические операции с большим объемом данных?

Добрый день, нужен теоретический совет по работе с большим количеством данных.
В таблице сохраняется примерно от 10 до 100 тыс строк данных (от 12 до 25 колонок)
Задача состоит в том что выборке этих данных, нужно произвести определенные расчет для каждой отдельной строки и усложняется все тем, что в этих расчет участвуют средние (средние не всегда арифметические) величины по некоторым колонкам.
Сейчас при получении сразу более 10к строк получаю переполнение оперативной памяти.
Можно ли как то сделать операции расчета данных пакетно с учетом просчета средних данных одновременно ?
Для лучшего понимания:
по одному столбцу считается средние арифметическое без учета нулевых значений
по второму столбцу считается сумма всех записей умноженная на 100 (для перевода в процент)
третья колонка считается как сумма первой / сумма второй

Как это процесс можно было бы оптимизировать ?
Спасибо за любую помощь

P.S
Стек: PHP7.1, Slim framework, Mysql 5.7, Драйвер для работы с БД Eloquent ORM
  • Вопрос задан
  • 103 просмотра
Подписаться 3 Средний 3 комментария
Пригласить эксперта
Ответы на вопрос 1
@grinat
Можно сделать view с расчетами, будешь дергать результаты как обычную таблицу.
Можно все результаты ложить в кэш и сбрасывать его при появлении новой записи. Касательно пакетной обработки в elepahant:
Chunking Results
If you need to process a lot (thousands) of Eloquent records, using the chunk command will allow you to do without eating all of your RAM:

User::chunk(200, function($users)
{
    foreach ($users as $user)
    {
        //
    }
});
The first argument passed to the method is the number of records you wish to receive per "chunk". The Closure passed as the second argument will be called for each chunk that is pulled from the database.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы