Ответ 1
В этом случае я считаю, что требуется увеличение размера пула буферов. Установите следующее:
[mysqld]
innodb_io_capacity = 2000
innodb_read_io_threads = 64
innodb_thread_concurrency = 0
innodb_write_io_threads = 64
Недавно я обновился с моего старого компьютера Windows в ген. 4 I7 Ubuntu 15.04
Выполняется как сон, ну... За исключением того, что любая команда мастеров Laravel, которая касается базы данных, занимает миллион лет, а мой старый компьютер выполнил любую из этих команд за считанные секунды.
Основное отличие заключается в том, что вместо XAMPP я запускаю MySQL как локальную службу.
Также на моем старом компьютере я мог видеть, как миграция медленно показывалась на экране, поскольку они, кажется, обрабатываются, хотя сейчас это занимает около 2 ~ 5 минут, и когда все результаты миграции отображаются сразу. Это может указывать на то, что где-то есть шея бутылки.
Где-то в Интернете кто-то сказал использовать '127.0.0.1' вместо "localhost" из-за разрешения DSN. Это не решило.
Чтобы убедиться, что проблема не была запущена
$time = microtime(true);
//also with host=127.0.0.1
new PDO("mysql:host=localhost;dbname=some_db", "username", "password");
//some simple queries here...
//yielded similar marginal times
echo microtime(true) - $time;
~ halp
Edit
Я собрал время выполнения для каждого запроса из фреймворка, у меня есть LOTS миграции, анализируя данные, которые я нашел там ничего безумно медленного (например, запрос работает в течение минуты).
Здесь ссылка с данными. Фактические запросы были омрачились в пользу моего работодателя.
Несмотря на то, что многие запросы выполняются в течение секунды или дольше, самый медленный, number 221
занимает 4,5 секунды.
У меня около ста миграции (я знаю), но вот что, если каждая миграция заняла секунду, я буду ждать около полутора минут, чтобы мигрировать, но это часто занимает от 4 до 5 минут.
Как было предложено oliverpool, я сделал некоторое профилирование, переигрывая запросы на mysql через терминал, но мне никогда не приходилось ждать больше секунды, а средний запрос занимал примерно секунду.
Вот скриншот профилирования для самого медленного запроса (3,5 секунды в миграции, не близком к секунде на рис.)
Может быть, это указывает на соединение? Кстати, медленный журнал запросов пуст после запуска миграции.
Кроме того, теперь я использую laravel 5, и поведение остается прежним. Я не знаю, как бороться с подключением к сети, поэтому я предполагаю, что некоторые поисковые запросы в порядке, любые предложения приветствуются.
Спасибо заранее.
В этом случае я считаю, что требуется увеличение размера пула буферов. Установите следующее:
[mysqld]
innodb_io_capacity = 2000
innodb_read_io_threads = 64
innodb_thread_concurrency = 0
innodb_write_io_threads = 64