Запросы данных и производительность

#php #mysql #xml #ajax #performance

#php #mysql #xml #ajax #Производительность

Вопрос:

должен ли я брать новые данные для моей карты мира ajax onlinegame (при перетаскивании / прокрутке) из моей базы данных mysql или лучше загружать данные из сгенерированного (и часто обновляемого) XML? (часто обновляется -> из-за присоединения новых игроков к игре / карте мира)?

другими словами: способен ли mysql не знать, что несколько тысяч игроков прокручивают карту мира (и, следовательно, запрашивают новые данные), или я должен использовать таблицу XML?

Ответ №1:

Лично я ненавижу XML.
Для вас это может быть подходящим инструментом для работы, но я просто собираюсь ответить на часть вашего вопроса «способен ли mysql на …» 🙂

ДА
Но это зависит от ваших навыков SQL. Как ускорить процесс?

  1. Держите сервер MySQL на той же машине, что и веб-сервер, чтобы избежать сетевого трафика.
  2. Используйте таблицы памяти, чтобы избежать ввода-вывода с диска.
  3. Разбирайтесь в SQL
  4. MySQL в конфигурации по умолчанию настроен на небольшие таблицы и небольшие объемы памяти, похоже, это подходит для вашего случая, но поэкспериментируйте и измерьте, чтобы увидеть, какая конфигурация работает лучше всего.
  5. Меньшее количество выборок / вставок / обновлений с большим количеством данных на запрос выполняется быстрее, чем большее количество выборок / вставок / обновлений с меньшим количеством данных на запрос.

Также обратите внимание, что если вы не кэшируете XML-файл в памяти, вы столкнетесь с проблемами блокировки XML-файла, замедляющими работу.

Ответ №2:

Обращение к базе данных почти всегда будет дороже обращения к файлу (из-за пересечения сети), но самым быстрым вариантом было бы сохранить набор данных / кэш в памяти (однако помните о потреблении памяти).

Ответ №3:

я думаю, mysql соответствует вашим потребностям.. вы также можете кластеризировать свои данные при нехватке системных ресурсов…

также могут быть интересны websockets для вас. может быть, вам стоит взглянуть на nodejs, с его помощью вы можете легко обрабатывать объединения новых пользователей (передавать новых игроков другим игрокам вместо извлечения данных из mysql

Ответ №4:

Возвращается ли ответ Ajax в виде XML или JSON? Если последнее, то зачем возиться с XML?

На моем месте я бы поддерживал данные в базе данных с помощью интеллектуального кэширования на стороне сервера (где вы можете выборочно аннулировать элементы кэша)