Как реализовать минимальную нагрузку на mysql, при большом посещении приложения?
Доброго всем времени суток!
Товарищи, интересует вопрос следующего характера: что лучше использовать, или как лучше организовать многопользовательские действия на одно приложение.
Опишу ситуацию: есть модуль, содержащий вход в несколько локаций. При входе, пользователь идентифицируется в базе, что в данный момент он находится в одной из нескольких локаций. При переходе по локациям соответственно запись меняется. В каждой локации можно нападать на тех, кто в данный момент находится в этом же месте. В базе находится таблица, дублирующая параметры пользователя, специально для модуля, в случае если в заданной ячейке будет 0 после нападения, запись удаляется, и пользователь соответственно переходит в начало локации.
Вопрос: с таким подходом понятно, что если пользователей в модуле 50-100, база потерпит, но если их 1000+, то соответственно идет огромная нагрузка на mysql с большим количеством запросов. Есть ли какие идеи для выхода? Не рентабельнее использовать sqllite? Или лучше?
Эти ваши 1000+ пользователей будут делать запросы одновременно?
Не понятно какие запросы у Вас идут к базе (?)
Не понятно какие вычисления производятся на данными (?)
Опишите более подробно.
Возможно, можно просто часть нагрузки с БД перенести на файлы. Например, те же данные пользователей, которые дублируются.
Да, запросы идут одновременно.
В базу идет запрос на определение текущих параметров пользователя.
Вынимаем данные, производим обычные мат. операции, сохраняем результаты.
@MrRino Ну, тогда стоит подумать о вынесении данных о пользователях в файлы (в виде PHP-массивов) и обращении к ним напрямую. Это будет быстрее чем какие либо стороние решения.
@VitaZheltyakov Я думал об этом, чтобы все занести во временное файловое хранилище, в них производить операции, а по окончанию результат в БД. Но! при таких объемах, файл будет неимоверно большим, и что-бы найти данные определенного пользователя, скрипту надо будет читать этот файл от начала до конца, и это с каждым пользователем. боюсь скорость ответа упадет в разы. Вот что меня беспокоит...
@MrRino Во-первых, заносить надо не всё, а только статичные данные. Как я понимаю, у Вас это параметры пользователя. Т.е. выгрузили из БД данные пользователя в файл, а далее работаете с файлом без БД.
Во-вторых, такие вещи записываются не в один файл, а во множество. Т.е. каждому пользователю отдельный файл с его данными. Именовать файлы нужно по id пользователя.