Я работаю над этой игрой под названием «Крепость», расположенной по адресу http://www.joemajewski.com/fortress. В любом случае, это одна из тех ролевых игр на основе браузера, где игроки создают армию и обновляют свою статистику, чтобы получить высокий рейтинг в таблице лидеров.Выполнение 100+ запросов на обновление MySQL. Советы по оптимизации Please :)
Каждые 30 минут будет выполняться задание cron, которое производит некоторые обновления. Он проходит через каждого игрока в игре (который будет продолжать расти естественно с течением времени по мере того, как все больше людей присоединятся) и обновляет определенную статистику. Это дает каждому 1 дополнительный оборот, дает им золото на основе их дохода, продуктов питания, дерева, меди, железа и т. Д., А также обновляет их рейтинг.
Это все mumbo-jumbo, я знаю, но дело в том, что каждый игрок будет иметь свой собственный запрос на обновление. Я приуроченные сценарий только с тремя членами: время
исполнения с функцией mysql_query() закомментированными для обновлений: ~ 3,5 мс
время выполнения с функцией mysql_query() работает правильно: ~ 14 мс
Очевидно, что запросы обновления, которые приведут к тому, что мое задание cron будет очень медленным, как только в игре будет зарегистрировано более 100 зарегистрированных участников. Я надеюсь, что у вас будет 100 активных игроков в течение двух недель после запуска игры, но многие игроки создают несколько учетных записей, поэтому я ожидаю по меньшей мере 200 участников через пару недель. С 200 запросами обновления, а также дополнительным временем для сортировки участников и расчета ранжирования, вероятно, потребуется 2 секунды для запуска задания cron.
Мой вопрос к вам. Есть ли более быстрый способ сделать что-то подобное? Я попытался добавить запросы «НАЧАТЬ ПЕРЕДАЧУ» и «КОМИТЕТ» до и после цикла, соответственно, но трудно оценить скорость всего с тремя членами. Будут ли транзакции сделать сценарий лучше или хуже? Любые другие способы обойти это? Любая помощь будет оценена по достоинству.
Большое спасибо за то, что нашли время, чтобы послушать мою просьбу.
Необходимо увидеть запросы ... –
индексы, индексы, индексы –
У меня уже есть индексы, и я не отправлял запросы, потому что это не мой вопрос. Я просто хотел знать, существуют ли какие-либо трюки MySQL, которые позволяли запускать запросы обновлений, сокращая время загрузки. –