Сообщений: 2,454 
	Тем: 53 
	Зарегистрирован: Apr 2010
	
 Репутация: 
 19,728
	 
 
	
	
		flopix Написал:Ну все таки эта система была придумана для редко изменяющихся данных, таких как настройки, какие то флаги для сервисов и прочее. Откуда тут быть нагрузке на базу даже при большом онлайне? 
Ведь никто не будет в такой системе хранитm счетчик выбитой адены или убитых мобов? 
Это мультисет для хранения данных, что бы не быть  срастранным человеком, который раздувает и так огромные классы L2Character & L2PcInstance. В нем могут храниться любые данные, а так же они могут меняться с любой частотой.
 
И да, на счет Вашего прошлого поста, можно поинтересоваться, Вы запускаете сервер на реалтайм джаве? Как полет без сборщика мусора? Собственно вопрос к javolution относится, который полностью неработоспособен на обычной виртуальной машине.
	  
	
	
m0nster.art - clear client patches, linkz to utils & code. 
Гадаю по капче.
  
	
	
 
 
	
	
	
		
	Сообщений: 561 
	Тем: 44 
	Зарегистрирован: Sep 2011
	
 Репутация: 
 412
	 
 
	
	
		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() вы выполняете в цикле по одно строчке. Не быстрее ли будет отправить все данные одним запросом?
	  
	
	
	
	
 
 
	
	
	
		
	Сообщений: 69 
	Тем: 7 
	Зарегистрирован: Jan 2015
	
 Репутация: 
 88
	 
 
	
		
		
		01-15-2015, 08:12 PM 
(Сообщение последний раз редактировалось: 01-15-2015, 08:17 PM   Johnson.)
		
	 
	
		flopix Написал:Как я понял вы сохраняете все данные в независимости от того изменились они или нет. По хорошему нужно ввести какой то флаг и сохранять в БД только те данные которые изменились. 
 
При сохранении replSt.executeUpdate() вы выполняете в цикле по одно строчке. Не быстрее ли будет отправить все данные одним запросом? 
Да, при полном сохранении сначала удаляются все данные игрока, а затем вносятся вновь. 
Так гарантированно удалятся все удаленные из мапы переменные без дополнительной геморойной логики.
 
Сначала я думал транзакциями сделать, но что-то меня остановило, не помню уже что. Сейчас попробую вспомнить, если ни чего серьезного - сделаю и перезалью.
 Добавлено через 3 минуты
PS: перепроверил сейчас удаление переменных при удалении персонажа - всё ок, ложная паника.
	  
	
	
Johnson получился в результате деления на null. Помогаю с джавой только за булочки с маком.
 
	
	
 
 
	
	
	
		
	Сообщений: 561 
	Тем: 44 
	Зарегистрирован: Sep 2011
	
 Репутация: 
 412
	 
 
	
	
		Johnson Написал:Да, при полном сохранении сначала удаляются все данные игрока, а затем вносятся вновь. 
. 
А зачем тогда REPLACE, а не INSERT ?   
	 
	
	
	
	
 
 
	
	
	
		
	Сообщений: 69 
	Тем: 7 
	Зарегистрирован: Jan 2015
	
 Репутация: 
 88
	 
 
	
	
		Так и не вспомнил, почему отказался от транзакций... Добавил и перезалил.
	 
	
	
Johnson получился в результате деления на null. Помогаю с джавой только за булочки с маком.
 
	
	
 
 
	
	
	
		
	Сообщений: 561 
	Тем: 44 
	Зарегистрирован: Sep 2011
	
 Репутация: 
 412
	 
 
	
	
		Pointer*Rage Написал:И да, на счет Вашего прошлого поста, можно поинтересоваться, Вы запускаете сервер на реалтайм джаве? Как полет без сборщика мусора? Собственно вопрос к javolution относится, который полностью неработоспособен на обычной виртуальной машине. 
Я java только учусь. Могли бы вы прояснить понятия: :confused: 
"реалтайм джаве" 
"обычной виртуальной машине"
 
И разве может не быть сборщика мусора?
	  
	
	
	
	
 
 
	
	
	
		
	Сообщений: 69 
	Тем: 7 
	Зарегистрирован: Jan 2015
	
 Репутация: 
 88
	 
 
	
		
		
		01-15-2015, 08:20 PM 
(Сообщение последний раз редактировалось: 01-15-2015, 08:22 PM   Johnson.)
		
	 
	
		flopix Написал:А зачем тогда REPLACE, а не INSERT ?   Пережитки прошлого, я сначала просто реплейсил, не удаляя, а потом заметил баг, не удаляющий переменную. Удаление добавил, а реплейс оставил. На сколько я знаю, он не сильно больше грузит базу, чем инсерт. 
Да и запись при каждом обновлении переменной недавно была, тоже использовала этот запрос.
 Добавлено через 31 секунду
flopix;384402 Написал:И разве может не быть сборщика мусора? Конечно, его аргументами отключить или переключить можно.
	  
	
	
Johnson получился в результате деления на null. Помогаю с джавой только за булочки с маком.
 
	
	
 
 
	
	
	
		
	Сообщений: 561 
	Тем: 44 
	Зарегистрирован: Sep 2011
	
 Репутация: 
 412
	 
 
	
	
		To Johnson, сразу видно вашу работу над допиливанием сборки Acis, так как там по умолчанию ничего этого нет.
	 
	
	
	
	
 
 
	
	
	
		
	Сообщений: 69 
	Тем: 7 
	Зарегистрирован: Jan 2015
	
 Репутация: 
 88
	 
 
	
		
		
		01-15-2015, 08:27 PM 
(Сообщение последний раз редактировалось: 01-15-2015, 08:32 PM   Johnson.)
		
	 
	
		flopix Написал:To Johnson, сразу видно вашу работу над допиливанием сборки Acis, так как там по умолчанию ничего этого нет. Они на то и ориентируются - лыжа эпилог (вроде бы) даунгрейженная до интерлюдии с небольшими правками. С одной стороны это хорошо. До этого сорцы фроузена поглядел, там проведена "глобальная работа" по впиливанию конфигов всего и вся...
 Добавлено через 4 минуты
flopix;384402 Написал:"реалтайм джаве" https://blogs.oracle.com/vmrobot/entry/%..._real_time
	 
	
	
Johnson получился в результате деления на null. Помогаю с джавой только за булочки с маком.
 
	
	
 
 
	
	
	
		
	Сообщений: 2,454 
	Тем: 53 
	Зарегистрирован: Apr 2010
	
 Репутация: 
 19,728
	 
 
	
	
		flopix Написал:Я java только учусь. Могли бы вы прояснить понятия: :confused: 
"реалтайм джаве" 
"обычной виртуальной машине" 
 
И разве может не быть сборщика мусора? 
В реалтайм ВМ нет вообще сборщика мусора. Если интересно - можете почитать на сайте оракла спеки и описания.
 Johnson Написал:Конечно, его аргументами отключить или переключить можно. 
В обычной ВМ сборщик мусора невозможно отключить. А вот изменить его поведение, либо сменить сам сборщик - легко.
	  
	
	
m0nster.art - clear client patches, linkz to utils & code. 
Гадаю по капче.
  
	
	
 
 
	
 |