Лучший способ обрабатывать большие базы данных с помощью Laravel
База данных
Я работаю с базой данных, которая имеет довольно большие таблицы, и это вызывает у меня проблемы. Одна из них имеет более 120 тыс. Строк.
Что я с этим делаю
Я зацикливаюсь на этой таблице в MakeAverage.php
файл, чтобы объединить их около 1 тыс. строк в новой таблице в моей базе данных.
Что не работает
Laravel не позволяет мне обрабатывать все сразу, даже если я пытаюсь DB::disableQueryLog()
или или take(1000)
предел например. Он возвращает мне пустую страницу каждый раз, даже если мои отчеты об ошибках были включены (вроде как это). Кроме того, у меня не было файла журнала Laravel для этого. Мне пришлось заглянуть в свой php_error.log (я использую MAMP), чтобы понять, что это на самом деле проблема memory_limit.
Что я сделал
Я увеличил объем памяти перед выполнением кода с помощью ini_set('memory_limit', '512M')
, (Это плохая практика, я должен сделать это в php.ini.)
Что случилось?
Это сработало! Тем не менее, Laravel выдал мне ошибку, потому что страница не загрузилась после 30 секунд из-за большого количества данных.
1 ответ
Что я буду делать
Потратив некоторое время на эту проблему и посмотрев на других людей, имеющих подобные проблемы (см. Форум Laravel, 19453595, 18775510 и 12443321), я подумал, что, возможно, PHP не является решением.
Так как, я только создаю Table B
от средних значений Table A
Я считаю, что SQL лучше всего соответствует моим потребностям, поскольку он явно быстрее PHP для операций такого типа (см. 6449072), и я могу использовать такие функции, как SUM
, AVERAGE
, COUNT
а также GROUP_BY
( Ссылка).