1,3 млн запросов в час. Как бы вы построили запросы?

У меня есть пошаговая онлайн-игра для iphone, в которой одновременно запущено множество игр. Я занимаюсь оптимизацией кода, так как сегодня произошел сбой и у меня, и у сервера.

Это настройка:

Прямо сейчас у меня есть одна таблица, "соответствует" (70 полей данных для каждой строки. Структура ), которая отслеживает все активные совпадения. Каждые 7 секунд iphone будет подключаться, загружать все совпадения в таблице «matches», в которой он/она активен, и обновлять пользовательский интерфейс в iphone.

Это работало отлично, пока около 1000 человек не скачали игру и не играли. Сервер рухнул.

Итак, для оптимизации я могу создать новую таблицу под названием «соответствует _требует обновления _». Эта таблица имеет 2 строки; имя и идентификатор. «id» совпадает с совпадением в таблице «matches». Когда совпадение обновляется, оно помещается в эту таблицу.

Теперь вместо поиска по всей таблице «совпадений» запрос просто проверяет, есть ли у игрока совпадения, которые необходимо обновить, а затем получает эти совпадения из таблицы «совпадений».

У меня двоякий вопрос:

  1. Является ли это оптимальным решением?
  2. Если игрок активен, скажем, в 10 матчах, есть ли хороший способ получить эти 10 матчей из таблицы «матчей» одновременно, или мне нужен цикл for, выполняющий 10 запросов, по одному для каждого матча?:

    "SELECT *FROM соответствует WHERE id = ?"

Заранее спасибо

7
задан BlackMouse 26 April 2012 в 21:17
поделиться