PDA

Просмотр полной версии : [Вопрос] Производительность базы данных при отказе от промежуточных переменных



TheMallard
03.12.2016, 17:06
Целесообразно ли отказаться от промежуточных переменных типа PlayerInfo и т. д., а вместо них изменять и получать данные из БД постоянно (кроме Money, WantedLevel и Score)? Это сделает возможным изменение пользовательских данных прямо через БД или сайт.

Как сильно это повлияет на производительность?

StevenH
03.12.2016, 20:50
Целесообразно ли отказаться от промежуточных переменных типа PlayerInfo и т. д., а вместо них изменять и получать данные из БД постоянно (кроме Money, WantedLevel и Score)? Это сделает возможным изменение пользовательских данных прямо через БД или сайт.

Как сильно это повлияет на производительность?

Точно не целесообразно! Целесообразней будет сделать следующее:
1. Зашел в игру -> загрузил данные игрока из БД в массив (PlayerInfo)
2. Когда изменяешь какие либо переменные, сразу сохранять в базу данных (как и сделано на Адвансе/Даймонде). pMoney не является исключением, сохранять так же, сразу в БД.

Выше вариант, который я описал, так же сделает возможным сразу обновлением данных игрока на сайте.

TheMallard
05.12.2016, 12:33
Точно не целесообразно! Целесообразней будет сделать следующее:
1. Зашел в игру -> загрузил данные игрока из БД в массив (PlayerInfo)
2. Когда изменяешь какие либо переменные, сразу сохранять в базу данных (как и сделано на Адвансе/Даймонде). pMoney не является исключением, сохранять так же, сразу в БД.

Выше вариант, который я описал, так же сделает возможным сразу обновлением данных игрока на сайте.

А что насчет изменения данных извне? Я хочу иметь возможность изменять всё в реальном времени путём редактирования БД.

DeimoS
05.12.2016, 14:45
А что насчет изменения данных извне? Я хочу иметь возможность изменять всё в реальном времени путём редактирования БД.

Таймер + запрос в БД на сверку данных. И если данные не совпадают - выгружать из БД.
Отказываться от хранения информации на сервере глупо, ибо представь сколько предстоит делать запросов, например, в чате, дабы проверять, есть ли у игрока мут или нет. То бишь, если с обновлением данных никаких проблем не будет, то для всяких проверок тебе нужно будет отправлять десятки запросов поочерёдно, обрабатывать каждый и только потом делать определённое действие

TheMallard
06.12.2016, 17:41
Таймер + запрос в БД на сверку данных. И если данные не совпадают - выгружать из БД.
Отказываться от хранения информации на сервере глупо, ибо представь сколько предстоит делать запросов, например, в чате, дабы проверять, есть ли у игрока мут или нет. То бишь, если с обновлением данных никаких проблем не будет, то для всяких проверок тебе нужно будет отправлять десятки запросов поочерёдно, обрабатывать каждый и только потом делать определённое действие

У меня данные не так часто изменяются - опыт, внешность, фракция, ранг, работа и т.д. /mute на сервере отсутствует. Money, WantedLevel и Score будут хранится на сервере.

DeimoS
06.12.2016, 17:45
У меня данные не так часто изменяются - опыт, внешность, фракция, ранг, работа и т.д. /mute на сервере отсутствует. Money, WantedLevel и Score будут хранится на сервере.

Ну сделай как хочешь. Не будет нормально работать - переделаешь. Какие проблемы?

Disinterpreter
10.12.2016, 00:56
Целесообразно ли отказаться от промежуточных переменных типа PlayerInfo и т. д., а вместо них изменять и получать данные из БД постоянно (кроме Money, WantedLevel и Score)?

Если вам нужно работать с этими данными на стороне (например производить инсерты и селекты с веб-морды и прочего), то целесообразно сделать, однако нужно взять машину посильнее и немного переписать конфигурации MySQL-сервера, тогда это не сильно ударит по нагрузке на машину.
Немного о конфигурациях: https://habrahabr.ru/post/66684/