SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian

Reply
 
Thread Tools Display Modes
Old 29/01/2014, 06:08 AM   #31
Richard_Gere
Huge Clucker
 
Richard_Gere's Avatar
 
Join Date: Aug 2010
Posts: 230
Reputation: 5
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by stabker View Post
Какой вариант хранения инфы с привязкой к аккаунту игрока лучше всего (не знаю, как правильно сформулировать, см. примеры).

1. Дополнительно храним ник в этой же таблице, пример загрузки (но загвоздка в том, что потом его постоянно придется обновлять)
Code:
SELECT *
FROM family
WHERE fid = 1
2. Храним только ид аккаунта, ник все равно никакого смысла не имеет при работе с этой таблицей. Пример загрузки

Code:
SELECT family.* , users.name AS creator
FROM family, users
WHERE family.fid = 1
AND family.creator_id = users.id
Выбор прошу аргументировать.
Второй вариант. Всегда лучше делать привязку по ID игрока, иначе вам придется во всех таблицах обновлять ник при его изменениях. Да и вообще в моде удобнее сравнивать числа, нежели строки.
__________________
Sorry for my bad english
Richard_Gere is offline   Reply With Quote
Old 03/02/2014, 02:43 AM   #32
Urukhay
Gangsta
 
Join Date: Sep 2013
Posts: 638
Reputation: 2
Default Re: MySQL (F.A.Q.)

Вот недавно стартовал новый плагин от Blueg. Там добавились опять же новые функции запросов:
mysql_tquery и mysql_pquery. Кто нибудь объяснит разницу?
И да, mysql_query - многопоточна? Если нет, то как можно организовать многопоточный запрос, и принять информацию, пришедшую с запросом в той же функции, что и был сделан запрос? (Чтобы не бегать из паблика в паблик чтобы принять запрос). И где вообще нежелательно использовать однопоточные запросы, а где можно?

Last edited by Urukhay; 03/02/2014 at 03:20 AM.
Urukhay is offline   Reply With Quote
Old 03/02/2014, 06:24 AM   #33
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,463
Reputation: 131
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by Urukhay View Post
Вот недавно стартовал новый плагин от Blueg. Там добавились опять же новые функции запросов:
mysql_tquery и mysql_pquery. Кто нибудь объяснит разницу?
И да, mysql_query - многопоточна? Если нет, то как можно организовать многопоточный запрос, и принять информацию, пришедшую с запросом в той же функции, что и был сделан запрос? (Чтобы не бегать из паблика в паблик чтобы принять запрос). И где вообще нежелательно использовать однопоточные запросы, а где можно?
Тема не для обсуждения плагинов, даже работающих с MySQL, и мультипоточности.
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is offline   Reply With Quote
Old 06/02/2014, 02:56 PM   #34
Makar93
Huge Clucker
 
Makar93's Avatar
 
Join Date: Sep 2009
Posts: 496
Reputation: 9
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by Stepashka View Post
Выносим достижения в отдельную таблицу, а связку делаем через промежуточную.
  • achievement: id, name, ...
  • user: id, ...
  • achievement_to_user: user_id, achievement_id, progress
    И создай ключ по двум полям (user_id, achievement_id) UNIQUE
Связь будем по принципу многие ко многим. С дополнительным параметром прогресса.
Переделал, но столкнулся совершенно с неожиданной проблемой.
Code:
UPDATE `achievement_to_user` SET progress=%d WHERE player_id=%d AND ach_id=%d
Вызывает кратковременный "лаг" сервера, WTF?
__________________
Makar93 is offline   Reply With Quote
Old 06/02/2014, 03:06 PM   #35
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,463
Reputation: 131
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by Makar93 View Post
Переделал, но столкнулся совершенно с неожиданной проблемой.
Code:
UPDATE `achievement_to_user` SET progress=%d WHERE player_id=%d AND ach_id=%d
Вызывает кратковременный "лаг" сервера, WTF?
ключ создал?
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is offline   Reply With Quote
Old 06/02/2014, 03:20 PM   #36
Makar93
Huge Clucker
 
Makar93's Avatar
 
Join Date: Sep 2009
Posts: 496
Reputation: 9
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by Stepashka View Post
ключ создал?
Ну насколько я правильно понял интерфейс HeidiSQL, то да)
Code:
CREATE TABLE `achievement_to_user` (
	`player_id` INT(11) NOT NULL DEFAULT '0',
	`ach_id` INT(11) NOT NULL DEFAULT '0',
	`progress` INT(11) NOT NULL DEFAULT '0'
	UNIQUE INDEX `player_id` (`player_id`, `ach_id`)
)
Attached Images
File Type: jpg Безымянный3.jpg (46.9 KB, 45 views)
__________________
Makar93 is offline   Reply With Quote
Old 06/02/2014, 03:41 PM   #37
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,463
Reputation: 131
Default Re: MySQL (F.A.Q.)

Какой плагин используешь?
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is offline   Reply With Quote
Old 06/02/2014, 03:43 PM   #38
Makar93
Huge Clucker
 
Makar93's Avatar
 
Join Date: Sep 2009
Posts: 496
Reputation: 9
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by Stepashka View Post
Какой плагин используешь?
http://forum.sa-mp.com/showthread.php?t=122983
2.1.1 статик под дебиан
__________________
Makar93 is offline   Reply With Quote
Old 07/02/2014, 12:37 PM   #39
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,463
Reputation: 131
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by Makar93 View Post
http://forum.sa-mp.com/showthread.php?t=122983
2.1.1 статик под дебиан
включи логирование запросов, уверен проблема не в MySQL.
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is offline   Reply With Quote
Old 08/02/2014, 09:59 AM   #40
Makar93
Huge Clucker
 
Makar93's Avatar
 
Join Date: Sep 2009
Posts: 496
Reputation: 9
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by Stepashka View Post
включи логирование запросов, уверен проблема не в MySQL.
Вроде все в норме, именно на VPS происходят лаги, винда на локалхосте тянет без проблем.
Code:
[Sat Feb 08 17:51:00 2014] Function: mysql_query executed: "UPDATE `achievement_to_user` SET progress=0 WHERE player_id=22702 AND ach_id=42" with result: "0".
[Sat Feb 08 17:51:00 2014] Function: mysql_ping executed with result: "0".
[Sat Feb 08 17:51:00 2014] Function: mysql_query executed: "UPDATE `achievement_to_user` SET progress=1 WHERE player_id=22702 AND ach_id=43" with result: "0".
[Sat Feb 08 17:51:00 2014] Function: mysql_ping executed with result: "0".
Code:
public CreateAchiveDBString(playerid)
{
	for(new achid = 0;achid<MAX_ACHIEVEMENTS;achid++)
	{
		new carstr1[20];
	 	format(carstr1, sizeof(carstr1),"AchivProg%d",achid);
	  	new paramquery[128];
	   	format(paramquery, sizeof(paramquery), "UPDATE `achievement_to_user` SET progress=%d WHERE player_id=%d AND ach_id=%d", GetPVarInt(playerid, carstr1),GetPVarInt(playerid, "PlayerSQLid"),achid);
		mysql_query(paramquery);
	}
}
Вот этот код точно вызывает лаги, до этого была реализация без цикла с сохранением прогресса вида CreateAchiveDBString(playerid,achid), но она даже по 1 запросу вызывала точно такой же результат.

UPD: Сменил тип таблицы, все пришло в норму, спасибо за помощь
Code:
ALTER TABLE `achievement_to_user`
	ENGINE=MyISAM;
__________________

Last edited by Makar93; 08/02/2014 at 11:08 AM.
Makar93 is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[GameMode] Basic MySQL Account Script [MySQL R7, cache functions, easydialog, Whirlpool, salted passwords] ReneG Gamemode Scripts 71 02/03/2014 11:48 AM
[GameMode] MySQL CLEAN GAMEMODE [Whirlpool, MySQL BlueG R7, Cache, Ready Package (Windows)] GiamPy. Gamemode Scripts 13 13/09/2013 04:31 PM
BlueG MySQL plugin - Failed (plugins/mysql.so: undefined symbol: _Z13stringvprintfPKcPc) linuxthefish Plugin Development 10 13/07/2013 10:56 AM
[Tool/Web/Other] MySQL DB Manager - Easily manage your MySQL databases with this remote application fiki574 Tools and Files 13 22/07/2012 09:41 AM


All times are GMT. The time now is 02:49 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.