2016-04-24 2 views
0

Пользовательские ключи в параметрах поиска, затем мы отправляем запрос поставщику данных и перенаправляем пользователя на страницу загрузки. Ответ от поставщика данных обращается к URL-адресу обратного вызова, и в этом случае мы анализируем результаты и сохраняем около 200 строк в db. Между тем на странице загрузки используется ajax для запроса db каждую секунду, и когда результаты все там отображаются, мы показываем результаты пользователю.Вставить в MYSQl слишком медленно

Проблема в том, что вставка в mysql db происходит слишком медленно. Мы знаем, что ответ от поставщика данных возвращается в течение нескольких секунд, но обработка скрипта и вставка строк в db происходит очень медленно. Мы используем multirow insert.

Любые предложения по улучшению? FYI, код очень длинный ... вот почему не отображается прямо сейчас.

+0

как медленно это ?? вставьте 200 строк, его также не будет так быстро. – rahul

+0

Расширение, двигатель db, индексирование? Предварительная обработка перед вставкой? Подключить/отключить для каждой вставки? Достаточная мощность машины? Думаю, многое другое. – frz3993

+0

@Plum занимает около 15-25 секунд. На развитие его намного быстрее примерно 2-3 секунды. – TimNguyenBSM

ответ

0

Есть множество факторов, влияющих на ваши вставки:

1) медленное оборудование и плохие скорости сервера. Sol: Обратитесь к администратору сервера

2) использовать что-то другое, чем InnoDB

3) Используйте суррогатный ключ, кроме первичного ключа, который является числовым и последовательным наряду с естественным первичным ключом.

ИЛИ

4) Тест https://stackoverflow.com/a/2223062/3391466.

0

Рекомендация: Вместо того, чтобы запускать код на одной странице и ждать пользователя всего процесса, почему бы не сохранить PHP-страницу инструкции в очереди php? Затем инструкции будут выполняться отдельным скриптом php (например, заданием Cron), и пользователю не придется ждать завершения всего процесса.

Однако в этой ситуации было бы удобно сообщить пользователю, что внесенные изменения могут потребовать немного времени для обновления.

Работы Cron очень просты в применении. В CPanel есть опция для Cron Jobs, где вы указываете, какой скрипт вы хотите запустить и в какие интервалы. Вы можете позволить своему скрипту знать, что он запускается один раз в 1 минуту (или более или менее в зависимости от того, сколько там спроса). Оттуда ваш скрипт проверяет очередь и может продолжать работать до тех пор, пока очередь не станет пустой.

Дайте мне знать, если это поможет!

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