Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Система переменных игрока
#11
flopix Написал:Ну все таки эта система была придумана для редко изменяющихся данных, таких как настройки, какие то флаги для сервисов и прочее. Откуда тут быть нагрузке на базу даже при большом онлайне?
Ведь никто не будет в такой системе хранитm счетчик выбитой адены или убитых мобов?

Это мультисет для хранения данных, что бы не быть срастранным человеком, который раздувает и так огромные классы L2Character & L2PcInstance. В нем могут храниться любые данные, а так же они могут меняться с любой частотой.

И да, на счет Вашего прошлого поста, можно поинтересоваться, Вы запускаете сервер на реалтайм джаве? Как полет без сборщика мусора? Собственно вопрос к javolution относится, который полностью неработоспособен на обычной виртуальной машине.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#12
PHP код:
<?php 
/** Сохраняет все переменные игрока в базу. */
public void store() {
try (
Connection con = L2DatabaseFactory.getInstance().getConnection();
PreparedStatement delSt = con.prepareStatement(sql_delete_vars);
PreparedStatement replSt = con.prepareStatement(sql_update_var);) {
delSt.setInt(1, ownerOid);
delSt.executeUpdate();

for (
Entry<String, String> e : map.entrySet()) {
replSt.setInt(1, ownerOid);
replSt.setString(2, e.getKey());
replSt.setString(3, e.getValue());
replSt.executeUpdate();
}
}
catch (
SQLException e) {
log.error("", e);
}
}

Как я понял вы сохраняете все данные в независимости от того изменились они или нет. По хорошему нужно ввести какой то флаг и сохранять в БД только те данные которые изменились.

При сохранении replSt.executeUpdate() вы выполняете в цикле по одно строчке. Не быстрее ли будет отправить все данные одним запросом?
Ответ
#13
flopix Написал:Как я понял вы сохраняете все данные в независимости от того изменились они или нет. По хорошему нужно ввести какой то флаг и сохранять в БД только те данные которые изменились.

При сохранении replSt.executeUpdate() вы выполняете в цикле по одно строчке. Не быстрее ли будет отправить все данные одним запросом?

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

Сначала я думал транзакциями сделать, но что-то меня остановило, не помню уже что. Сейчас попробую вспомнить, если ни чего серьезного - сделаю и перезалью.

Добавлено через 3 минуты
PS: перепроверил сейчас удаление переменных при удалении персонажа - всё ок, ложная паника.
Johnson получился в результате деления на null. Помогаю с джавой только за булочки с маком.
Ответ
#14
Johnson Написал:Да, при полном сохранении сначала удаляются все данные игрока, а затем вносятся вновь.
.

А зачем тогда REPLACE, а не INSERT ? Wink
Ответ
#15
Так и не вспомнил, почему отказался от транзакций... Добавил и перезалил.
Johnson получился в результате деления на null. Помогаю с джавой только за булочки с маком.
Ответ
#16
Pointer*Rage Написал:И да, на счет Вашего прошлого поста, можно поинтересоваться, Вы запускаете сервер на реалтайм джаве? Как полет без сборщика мусора? Собственно вопрос к javolution относится, который полностью неработоспособен на обычной виртуальной машине.

Я java только учусь. Могли бы вы прояснить понятия: :confused:
"реалтайм джаве"
"обычной виртуальной машине"

И разве может не быть сборщика мусора?
Ответ
#17
flopix Написал:А зачем тогда REPLACE, а не INSERT ? Wink
Пережитки прошлого, я сначала просто реплейсил, не удаляя, а потом заметил баг, не удаляющий переменную. Удаление добавил, а реплейс оставил. На сколько я знаю, он не сильно больше грузит базу, чем инсерт.
Да и запись при каждом обновлении переменной недавно была, тоже использовала этот запрос.

Добавлено через 31 секунду
flopix;384402 Написал:И разве может не быть сборщика мусора?
Конечно, его аргументами отключить или переключить можно.
Johnson получился в результате деления на null. Помогаю с джавой только за булочки с маком.
Ответ
#18
To Johnson, сразу видно вашу работу над допиливанием сборки Acis, так как там по умолчанию ничего этого нет.
Ответ
#19
flopix Написал:To Johnson, сразу видно вашу работу над допиливанием сборки Acis, так как там по умолчанию ничего этого нет.
Они на то и ориентируются - лыжа эпилог (вроде бы) даунгрейженная до интерлюдии с небольшими правками. С одной стороны это хорошо. До этого сорцы фроузена поглядел, там проведена "глобальная работа" по впиливанию конфигов всего и вся...

Добавлено через 4 минуты
flopix;384402 Написал:"реалтайм джаве"
https://blogs.oracle.com/vmrobot/entry/%..._real_time
Johnson получился в результате деления на null. Помогаю с джавой только за булочки с маком.
Ответ
#20
flopix Написал:Я java только учусь. Могли бы вы прояснить понятия: :confused:
"реалтайм джаве"
"обычной виртуальной машине"

И разве может не быть сборщика мусора?

В реалтайм ВМ нет вообще сборщика мусора. Если интересно - можете почитать на сайте оракла спеки и описания.

Johnson Написал:Конечно, его аргументами отключить или переключить можно.

В обычной ВМ сборщик мусора невозможно отключить. А вот изменить его поведение, либо сменить сам сборщик - легко.
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Не пропадает опыт после смерти игрока Magican 1 1,211 04-07-2020, 06:41 PM
Последний пост: Magican
  заставить игрока подобрать айтем slayer48 9 2,519 08-05-2015, 02:13 PM
Последний пост: Gawric
  Система достижений Map 2 1,516 03-06-2015, 02:05 PM
Последний пост: ProDev
  Система достижений в Альт+Б itcry 7 2,337 02-14-2015, 05:41 PM
Последний пост: Donatte
  [ШАРА]Система рейтинга GOD для HF (частичные сурсы/компил) OneThunder 0 1,403 08-05-2014, 11:34 AM
Последний пост: OneThunder
  Смерть игрока Map 7 2,068 06-30-2014, 03:41 PM
Последний пост: Map
  Система аванпостов L2J 0 1,060 04-16-2014, 03:24 PM
Последний пост: L2J
  Система Атрибутов Auri 15 2,839 01-28-2014, 05:50 PM
Последний пост: Auri
  Система тиккетов (Support) Frozenn 8 2,534 03-14-2013, 07:49 PM
Последний пост: KilRoy
  удалить предмет у игрока mego4el 0 1,129 08-25-2012, 11:42 PM
Последний пост: mego4el

Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)