Показать сообщение отдельно
Старый 24.08.2011, 12:15   #1
asahka
Гость
Аватар для asahka
Сообщений: n/a
Благодарностей:
0 всего

Технический аспект дюпа (метод бросил и поднял)


Сильно не пинайте, просто размышления...

В одной теме писалось что если бросить и поднять вещь много раз, произойдет дюп, актуально ли это на офе сейчас?

Так же дюп работающий во множестве ММОРПГ основан на моменте сетевого лага, неоднократно об этом писалось.

Отсюда две технические возможности которые я скромно предполагаю.
Ошибка сетевая
1) одновременно приходит два и более пакета на сервер (бросание вещи), как бы видим две вещи на земле. Вещи находятся в памяти сервера, в базе еще не внесен дюп, когда поднимаем вторую вещь делается "легальное" обновление в таблицу.

К сожалению у меня нет программ, которые могут такое сделать, попробуйте?

Ошибка СУБД
2) Если таблица не индексируемая или MSSQL работает в режиме параллельности - то идет нарушение транзакционости, получаем две вещи стразу.
Второй способ получается актуален, когда идет большая нагрузка на СУБД<-игровой сервер->, здесь нужно ловить момент, например когда админы подключаются например профайлером, либо когда меняют рейты? Вообще таблица вещей с первичным?

Проверить думаю будет просто, если первый вариант не проходит, тогда остается второй, более интеллектуальный что ли.

Смысл поста сузить поиски лага.

Сильно не пинайте, так как это не более чем предположение, но было бы интересно если бы кто то проверил первый вариант и отписался.

Последний раз редактировалось asahka; 24.08.2011 в 13:10. Причина: уточнение
 
Ответить с цитированием