- Modified the login SQL server so that case insensitive lookups use "where name = BINARY 'name'" instead of "where BINARY name = 'name'", since this way the name index should be used, and performance will no longer be heavily affected.
- Modified main.sql to add 4 missing indexes (thanks to ErkDog): char_id on the tables memo/friends, and online/name on the char table. Added upgrade_svn8728.sql to add these indexes to already existing tables. - Changed back the default of case-sensitive to ON since it shouldn't be such a bad performance hog now. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@8728 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
0697e450ed
commit
3c5c104561
@ -4,6 +4,14 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
|
|||||||
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
||||||
|
|
||||||
2006/09/12
|
2006/09/12
|
||||||
|
* Modified the login SQL server so that case insensitive lookups use "where
|
||||||
|
name = BINARY 'name'" instead of "where BINARY name = 'name'", since this
|
||||||
|
way the name index should be used, and performance will no longer be
|
||||||
|
heavily affected. [Skotlex]
|
||||||
|
* Modified main.sql to add 4 missing indexes (thanks to ErkDog): char_id on
|
||||||
|
the tables memo/friends, and online/name on the char table. Added
|
||||||
|
upgrade_svn8728.sql to add these indexes to already existing tables.
|
||||||
|
[Skotlex]
|
||||||
* Updated convert_engine.sql to use TYPE instead of ENGINE to be compatible
|
* Updated convert_engine.sql to use TYPE instead of ENGINE to be compatible
|
||||||
with Mysql 4 installations. [Skotlex]
|
with Mysql 4 installations. [Skotlex]
|
||||||
* Moved the morph restrictions from skill_additional_effect to
|
* Moved the morph restrictions from skill_additional_effect to
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
Date Added
|
Date Added
|
||||||
|
|
||||||
2006/09/12
|
2006/09/12
|
||||||
|
* Changed back the default of case-sensitive to ON since it shouldn't be
|
||||||
|
such a bad performance hog now. [Skotlex]
|
||||||
* case_sensitive is now off by default due to performance issues
|
* case_sensitive is now off by default due to performance issues
|
||||||
(login_athena.conf). [Skotlex]
|
(login_athena.conf). [Skotlex]
|
||||||
2006/09/11
|
2006/09/11
|
||||||
|
@ -51,10 +51,7 @@ ladminallowip: all
|
|||||||
console: off
|
console: off
|
||||||
|
|
||||||
// Are login's case sensitive (SQL only)?
|
// Are login's case sensitive (SQL only)?
|
||||||
// WARNING: Note that turning this on will cause login queries to use BINARY
|
case_sensitive: on
|
||||||
// searches, which disable the table's index and cause severe performance
|
|
||||||
// penalties on large tables.
|
|
||||||
case_sensitive: off
|
|
||||||
|
|
||||||
// Gamemaster password, used with the @gm command to obtain GM commands (level of gm set with level_new_gm parameter).
|
// Gamemaster password, used with the @gm command to obtain GM commands (level of gm set with level_new_gm parameter).
|
||||||
// NOTICE: You should also change this one.
|
// NOTICE: You should also change this one.
|
||||||
|
@ -81,7 +81,9 @@ CREATE TABLE `char` (
|
|||||||
PRIMARY KEY (`char_id`),
|
PRIMARY KEY (`char_id`),
|
||||||
KEY `account_id` (`account_id`),
|
KEY `account_id` (`account_id`),
|
||||||
KEY `party_id` (`party_id`),
|
KEY `party_id` (`party_id`),
|
||||||
KEY `guild_id` (`guild_id`)
|
KEY `guild_id` (`guild_id`),
|
||||||
|
KEY `name` (`name`),
|
||||||
|
KEY `online` (`online`)
|
||||||
) TYPE=MyISAM AUTO_INCREMENT=150000;
|
) TYPE=MyISAM AUTO_INCREMENT=150000;
|
||||||
|
|
||||||
--
|
--
|
||||||
@ -113,7 +115,8 @@ DROP TABLE IF EXISTS `friends`;
|
|||||||
CREATE TABLE `friends` (
|
CREATE TABLE `friends` (
|
||||||
`char_id` int(11) NOT NULL default '0',
|
`char_id` int(11) NOT NULL default '0',
|
||||||
`friend_account` int(11) NOT NULL default '0',
|
`friend_account` int(11) NOT NULL default '0',
|
||||||
`friend_id` int(11) NOT NULL default '0'
|
`friend_id` int(11) NOT NULL default '0',
|
||||||
|
KEY `char_id` (`char_id`)
|
||||||
) TYPE=MyISAM;
|
) TYPE=MyISAM;
|
||||||
|
|
||||||
--
|
--
|
||||||
@ -461,7 +464,8 @@ CREATE TABLE `memo` (
|
|||||||
`map` varchar(255) NOT NULL default '',
|
`map` varchar(255) NOT NULL default '',
|
||||||
`x` smallint(9) unsigned NOT NULL default '0',
|
`x` smallint(9) unsigned NOT NULL default '0',
|
||||||
`y` smallint(9) unsigned NOT NULL default '0',
|
`y` smallint(9) unsigned NOT NULL default '0',
|
||||||
PRIMARY KEY (`memo_id`)
|
PRIMARY KEY (`memo_id`),
|
||||||
|
KEY `char_id` (`char_id`)
|
||||||
) TYPE=MyISAM;
|
) TYPE=MyISAM;
|
||||||
|
|
||||||
--
|
--
|
||||||
|
4
sql-files/upgrade_svn8728.sql
Normal file
4
sql-files/upgrade_svn8728.sql
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
ALTER TABLE `friends` ADD INDEX ( `char_id` );
|
||||||
|
ALTER TABLE `memo` ADD INDEX ( `char_id` );
|
||||||
|
ALTER TABLE `char` ADD INDEX ( `name` );
|
||||||
|
ALTER TABLE `char` ADD INDEX ( `online` );
|
@ -640,7 +640,7 @@ int mmo_auth( struct mmo_account* account , int fd){
|
|||||||
|
|
||||||
// make query
|
// make query
|
||||||
sprintf(tmpsql, "SELECT `%s`,`%s`,`%s`,`lastlogin`,`logincount`,`sex`,`connect_until`,`last_ip`,`ban_until`,`state`,`%s`"
|
sprintf(tmpsql, "SELECT `%s`,`%s`,`%s`,`lastlogin`,`logincount`,`sex`,`connect_until`,`last_ip`,`ban_until`,`state`,`%s`"
|
||||||
" FROM `%s` WHERE %s `%s`='%s'", login_db_account_id, login_db_userid, login_db_user_pass, login_db_level, login_db, case_sensitive ? "BINARY" : "", login_db_userid, t_uid);
|
" FROM `%s` WHERE `%s`= %s '%s'", login_db_account_id, login_db_userid, login_db_user_pass, login_db_level, login_db, login_db_userid, case_sensitive ? "BINARY" : "", t_uid);
|
||||||
//login {0-account_id/1-userid/2-user_pass/3-lastlogin/4-logincount/5-sex/6-connect_untl/7-last_ip/8-ban_until/9-state/10-level}
|
//login {0-account_id/1-userid/2-user_pass/3-lastlogin/4-logincount/5-sex/6-connect_untl/7-last_ip/8-ban_until/9-state/10-level}
|
||||||
|
|
||||||
// query
|
// query
|
||||||
@ -790,26 +790,11 @@ int mmo_auth( struct mmo_account* account , int fd){
|
|||||||
if (ban_until_time > time(NULL)) // always banned
|
if (ban_until_time > time(NULL)) // always banned
|
||||||
return 6; // 6 = Your are Prohibited to log in until %s
|
return 6; // 6 = Your are Prohibited to log in until %s
|
||||||
|
|
||||||
sprintf(tmpsql, "UPDATE `%s` SET `ban_until`='0' WHERE %s `%s`='%s'", login_db, case_sensitive ? "BINARY" : "", login_db_userid, t_uid);
|
sprintf(tmpsql, "UPDATE `%s` SET `ban_until`='0' WHERE `%s`= %s '%s'", login_db, login_db_userid, case_sensitive ? "BINARY" : "", t_uid);
|
||||||
if (mysql_query(&mysql_handle, tmpsql)) {
|
if (mysql_query(&mysql_handle, tmpsql)) {
|
||||||
ShowSQL("DB error - %s\n",mysql_error(&mysql_handle));
|
ShowSQL("DB error - %s\n",mysql_error(&mysql_handle));
|
||||||
ShowDebug("at %s:%d - %s\n", __FILE__,__LINE__,tmp_sql);
|
ShowDebug("at %s:%d - %s\n", __FILE__,__LINE__,tmp_sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ban is finished
|
|
||||||
// reset the ban time
|
|
||||||
/* //Removed "state" of bans, it behaves now like their TXT counter-part. [Skotlex]
|
|
||||||
if (atoi(sql_row[9])==7) {//it was a temp ban - so we set STATE to 0
|
|
||||||
sprintf(tmpsql, "UPDATE `%s` SET `ban_until`='0', `state`='0' WHERE %s `%s`='%s'", login_db, case_sensitive ? "BINARY" : "", login_db_userid, t_uid);
|
|
||||||
strcpy(sql_row[9],"0"); //we clear STATE
|
|
||||||
} else //it was a permanent ban + temp ban. So we leave STATE = 5, but clear the temp ban
|
|
||||||
sprintf(tmpsql, "UPDATE `%s` SET `ban_until`='0' WHERE %s `%s`='%s'", login_db, case_sensitive ? "BINARY" : "", login_db_userid, t_uid);
|
|
||||||
|
|
||||||
if (mysql_query(&mysql_handle, tmpsql)) {
|
|
||||||
ShowSQL("DB error - %s\n",mysql_error(&mysql_handle));
|
|
||||||
ShowDebug("at %s:%d - %s\n", __FILE__,__LINE__,tmp_sql);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (atoi(sql_row[9])) {
|
if (atoi(sql_row[9])) {
|
||||||
@ -875,8 +860,8 @@ int mmo_auth( struct mmo_account* account , int fd){
|
|||||||
|
|
||||||
if (account->sex != 2 && account->account_id < START_ACCOUNT_NUM)
|
if (account->sex != 2 && account->account_id < START_ACCOUNT_NUM)
|
||||||
ShowWarning("Account %s has account id %d! Account IDs must be over %d to work properly!\n", account->userid, account->account_id, START_ACCOUNT_NUM);
|
ShowWarning("Account %s has account id %d! Account IDs must be over %d to work properly!\n", account->userid, account->account_id, START_ACCOUNT_NUM);
|
||||||
sprintf(tmpsql, "UPDATE `%s` SET `lastlogin` = NOW(), `logincount`=`logincount` +1, `last_ip`='%s' WHERE %s `%s` = '%s'",
|
sprintf(tmpsql, "UPDATE `%s` SET `lastlogin` = NOW(), `logincount`=`logincount` +1, `last_ip`='%s' WHERE `%s` = %s '%s'",
|
||||||
login_db, ip, case_sensitive ? "BINARY" : "", login_db_userid, sql_row[1]);
|
login_db, ip, login_db_userid, case_sensitive ? "BINARY" : "", sql_row[1]);
|
||||||
mysql_free_result(sql_res) ; //resource free
|
mysql_free_result(sql_res) ; //resource free
|
||||||
if (mysql_query(&mysql_handle, tmpsql)) {
|
if (mysql_query(&mysql_handle, tmpsql)) {
|
||||||
ShowSQL("DB error - %s\n",mysql_error(&mysql_handle));
|
ShowSQL("DB error - %s\n",mysql_error(&mysql_handle));
|
||||||
@ -1796,7 +1781,7 @@ int parse_login(int fd) {
|
|||||||
//result = 5;
|
//result = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(tmpsql,"SELECT `ban_until` FROM `%s` WHERE %s `%s` = '%s'",login_db, case_sensitive ? "BINARY" : "",login_db_userid, t_uid);
|
sprintf(tmpsql,"SELECT `ban_until` FROM `%s` WHERE `%s` = %s '%s'",login_db, login_db_userid, case_sensitive ? "BINARY" : "", t_uid);
|
||||||
if(mysql_query(&mysql_handle, tmpsql)) {
|
if(mysql_query(&mysql_handle, tmpsql)) {
|
||||||
ShowSQL("DB error - %s\n",mysql_error(&mysql_handle));
|
ShowSQL("DB error - %s\n",mysql_error(&mysql_handle));
|
||||||
ShowDebug("at %s:%d - %s\n", __FILE__,__LINE__,tmp_sql);
|
ShowDebug("at %s:%d - %s\n", __FILE__,__LINE__,tmp_sql);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user