2016-08-14 3 views
2

Я использую laravel 5.1 и хочу обновить таблицу mysql, которая содержит около 0,2 миллиона строк. Он обновляет почти 25000 строк, и после этого он этого не делает. Обновление занимает всего полтора часа.Команда Laravel artisan останавливается через некоторое время

Любые предложения?

ответ

0

Есть несколько вещей, которые вы хотите проверить в первую очередь.

  • Каких ошибок вы получаете в журналах ошибок PHP (ошибки времени ожидания, из-за ошибки памяти, и т.д. ...)
  • Каких ошибок вы получаете в журналах ошибок MySQL
  • Является ли ваше ядро ​​убивает долго работают процессы (например, в extreme resource starvation)

Если сценарий перестает регулярно обновляться в одном месте, например, это может быть ошибка в вашем SQL в этом конкретном выражении. Поэтому убедитесь, что вы проверяете ошибки, возвращаемые mysql на PHP (см. Руководство по обработке ошибок в PDO и MySQLi).

Если вы используете 200K различных SQL-запросов через PHP, по одному, он должен быть медленным, потому что вы собираетесь поразить SQL-синтаксический анализатор, выполнение запроса и шаг выборки результата для каждого запроса. Есть несколько более быстрых альтернатив этому, например, LOAD DATA INFILE, который обходит весь шаг анализатора и выполнения запроса в MySQL, позволяя напрямую записывать в объектный файл базы данных из CSV. Это полезно для загрузки больших объемов данных в вашу базу данных сразу, очень быстро.

+0

Первоначально он обновляет 6-7 рядов в секунду, и скорость непрерывно уменьшается, и она приближается к нулю. –

0

Вы проверяете свои журналы ошибок. Я думаю, вы сказали, что 25000 raw обновлены хорошо, и после этого остановится. Это может быть причиной некоторых ошибок в строке базы данных при ее обновлении. если вы можете частично проверить часть таблицы обновлений, вы можете ее проверить.

Например: первое обновление 1-2000, а затем 2000-40000. при обновлении диапазона 20000-250000 только пройти ошибку, это означает, что ваша программа в порядке, а db entry pass error.but block wise ok, при увеличении load.it может помочь вам проверить, что ваша программа может обрабатывать нагрузку. Это своего рода методы тестирования.

Ваша программа может быть медленной, потому что существует огромная коллекция данных, а также зависит от вашего компьютера или сервера или производительности среды разработки. попробуйте перекомпоновать или оптимизировать свои коды, повышайте производительность. Вы также можете попробовать базу данных независимых отношений (mongodb) некоторое время, это может дать вам хорошее время для обработки большого количества данных. Я думаю, что это может помочь вам решить вашу проблему.

+0

Первоначально он обновляет 6-7 рядов в секунду, и скорость непрерывно уменьшается, и она приближается к нулю. –

Смежные вопросы