anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mi 11 Jun, 2025 02:21

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do 20 Mär, 2008 13:49 
Offline
Freak
Freak
Benutzeravatar

Registriert: Di 01 Mai, 2007 13:57
Beiträge: 1634
Wohnort: Dortmund.
Geschlecht: Männlich
LoGD: Lokal.
Skype: josh.hoiul
Juden Ihr lieben Anpera'ianer,

Habe mal eine Frage in sachen MySQL.....
Und zwar, möchte ich meine Accounttabelle radikal aufräumen. Das heist, alles was nicht unbedingt dort rein muss, wird ausgelagert.
So, das habe ich dann heute Nacht einmal angefangen... Natürlich sind noch nicht alle Einträge in den jeweiligen Tabellen. Aber bevor
ich das dann so weiter mache, hätte ich doch gerne den Rat von den Einstein's hier. (Keine Beleidigung, eher Kompliment *g)
Habe folgenden Code bisher:

$this->bbcode_second_pass_code('', 'CREATE TABLE account (
account_id INT( 11 ) unsigned NOT NULL auto_increment;
account_login VARCHAR( 50 ) NOT NULL default '',
account_name VARCHAR( 50 ) NOT NULL default '',
account_pass VARCHAR( 25 ) binary NOT NULL default '',
account_sex TINYINT( 4 ) unsigned NOT NULL default 0,
account_kunst VARCHAR( 50 ) NOT NULL default 0,
account_beta TINYINT( 4 ) unsigned NOT NULL default 0,
account_profile TEXT NOT NULL,
account_level INT( 11 ) unsigned NOT NULL default 1,
account_turns INT( 11 ) unsigned NOT NULL default '23',
account_gold BIGINT( 1000 ) unsigned NOT NULL default 0,
account_gems INT( 11 ) unsigned NOT NULL default 0,
account_inbank INT( 11 ) unsigned NOT NULL default 0,
account_title VARCHAR( 30 ) NOT NULL default '',
account_colortitle VARCHAR( 30 ) NOT NULL default '',
account_output TEXT NOT NULL,
account_allowdnavs TEXT NOT NULL,
account_adminrank TINYINT( 5 ) unsigned NOT NULL default 0,
account_alive INT( 11 ) NOT NULL default 0,
account_exp INT( 11 ) unsigned NOT NULL default 0,
account_weapon VARCHAR( 100 ) NOT NULL default 'Fäuste',
account_armor VARCHAR( 100 ) NOT NULL default 'Lumpen',
account_atk INT( 11 ) unsigned NOT NULL default 0,
account_def INT( 11 ) unsigned NOT NULL default 0,
account_weaponatk INT( 11 ) unsigned NOT NULL default 0,
account_armordef INT( 11 ) unsigned NOT NULL default 0,
account_price_weapon INT( 11 ) unsigned NOT NULL default 0,
account_price_armor INT( 11 ) unsigned NOT NULL default 0,
account_loggedin TINYINT( 4 ) unsigned NOT NULL default 0,
account_locked TINYINT( 4 ) unsigned NOT NULL default 0,
account_lasthit DATETIME NOT NULL default '0000-00-00 00:00:00',
account_laston DATETIME NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (account_id),
KEY account_name (account_name),
KEY account_level (account_level),
KEY account_login (account_login),
KEY account_alive (account_alive),
KEY account_laston (account_laston),
KEY account_lasthit (account_lasthit),
KEY account_loggedin (account_loggedin),
KEY account_locked (account_locked)
) TYPE=MySIAM;

CREATE TABLE account_forest_event (
forest_event_account INT( 11 ) unsigned NOT NULL auto_increment,
forest_event_witch INT( 4 ) NOT NULL default 0,
forest_event_dragon INT( 11 ) NOT NULL default 0,
forest_event_oger TINYNIT( 4 ) NOT NULL default 0
PRIMARY KEY (forest_event_account)
) TYPE=MySIAM;

CREATE TABLE account_biographie (
biographie_account INT( 11 ) unsigned NOT NULL auto_increment,
biographie_status TINYINT( 4 ) unsigned NOT NULL default 0,
biographie_verwarnungen INT( 11 ) unsigned NOT NULL default 0,
biographie_biographie TEXT NOT NULL,
PRIMARY KEY (biographie_account)
) TYPE=MySIAM;

CREATE TABLE account_zaehler (
zaehler_account INT( 11 ) unsigned NOT NULL auto_increment,
zaehler_seenmaster TINYINT( 4 ) unsigned NOT NULL default 0,
zaehler_seendragon TINYINT( 4 ) unsigned NOT NULL default 0,
zaehler_seenbarde TINYINT( 4 ) unsigned NOT NULL default 0,
zaehler_seenlover TINYINT( 4 ) unsigned NOT NULL default 0,
zaehler_charisma INT( 11 ) unsigned NOT NULL default 0,
zaehler_marriedto INT( 11 ) unsigned NOT NULL default 0,
zaehler_charm INT( 11 ) unsigned NOT NULL default 0,
zaehler_age INT( 11 ) unsigned NOT NULL default 0,
zaehler_reputation INT( 11 ) unsigned NOT NULL default 0,
zaehler_punch INT( 11 ) unsigned NOT NULL default 0,
zaehler_drunkenness INT( 11 ) unsigned NOT NULL default 0,
zaehler_dragonkills INT( 11 ) unsigned NOT NULL default 0,
PRIMARY KEY (zaehler_account)
) TYPE=MySIAM;')

Soo und nun möchte ich wissen, ob das so "einigermassen" richtig wäre. Um die $session habe ich mich derweil schon gekümmert, nur noch nicht ausprobiert,sollte aber laufen...

$this->bbcode_second_pass_code('', '
- Tabelle Account:
$session['account']
- Tabelle Account_Forest_Event:
$session['forest']
- Tabelle Account_Biographie:
$session['biographie']
- Tabelle Account_Zaehler:
$session['zaehler']
')

Liegt alles auf dem Rechner... müsste aber so gehen....
Also.. darf ich mir jetzt n' Goldenenschuss verpassen, oder geht der Code von oben so???

Liebe Grüße,
My.

PS: Daher auf den drei Welten Delta Server eh noch nicht soviel drauf ist, würden die Änderungen eh schnell gehen......

_________________
Never change a running system. Bullshit! ;)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 20 Mär, 2008 13:56 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
An sich sieht das nicht unbedingt falsch aus, nur bringt es nicht so besonders viel, wenn du trotzdem immer gleich alles mitlädst, soviel sei nur als Hinweis gesagt.
Außerdem würde ich noch zum einen in diesem Falle InnoDB verwenden (und dann gleich die Foreign-Key-Constraints einbauen, damit du dir arbeit beim Löschen sparst) und auf eine einzeitliche Sprache festlegen (account_zahler geht ja wohl gar nicht....)

Ob man nun die Waffeninformationen mit in der Haupttabelle haben muss, darüber kann man streiten.
Ansonsten kann ich aber nur sagen: probiers al aus und schau, ob die die wraper-funktionen alle richtig umgeschrieben bekommst usw.

Auric

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 20 Mär, 2008 14:02 
Offline
Freak
Freak
Benutzeravatar

Registriert: Di 01 Mai, 2007 13:57
Beiträge: 1634
Wohnort: Dortmund.
Geschlecht: Männlich
LoGD: Lokal.
Skype: josh.hoiul
Ok...
Meinet wegen auch "account_counter" *fg

Mitgeladen wird das alles auf gar keinen Fall ! O_o

Da wo ich die bestimmte Session brauche, kommt ein "Require_Once 'lib/lib.session.php';" hin.

Die Biographie brauche ich ja z.b. nicht im Wald. Und die den Waldeventzähler brauche ich so auch nicht auf dem DP...

Bzw.

InnoDB? :?

_________________
Never change a running system. Bullshit! ;)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 20 Mär, 2008 14:06 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Man benötigt für die Accounts genau 2 Tabellen: accounts, mit den wichtigsten Daten, und account_prefs, mit einem {acctid-prefname}-Schlüsselpaar und einem dritten Wertefeld. Das reicht völlig aus.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 20 Mär, 2008 17:43 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Die typische 1:n Zuordnung, hm?
An sich schon sauberer, aber für meinen geschmack viel zu speicherlastig, wenn man bedenkt, dass es um die accounts-Tabelle geht (ich habe mich just für's neue WVSYS gegen ein solches System entschieden...). So hat man zunächst jede menge redundante information auf der Platte (Der bezeichner für das Feld, also z.B. acctid-outhouse sowie den ja auch immerhin 8 Byte langen acctid-Key je zeile, das sind locker mal 20-30 Bytes pro Zeile), der dann auch bei der Verarbeitung mit in den RAM muss und von den Suchvorgängen will ich gar nicht erst sprechen. Ist zwar e persönliche EInschätzung und ich weiss, das dieses System viel und gerne auch von Profis verwendet wird, aber in meinen Augen bremst das nur an einer Stelle, wo man eigentlich beschleuningen will.

Dann doch schon eher mysqls System... auch wenn man den ganzen Misc-Kram auch in eine Tabelle packen könnte... oer zumindest weniger, aber das soll die Praxis zeigen.

Auric

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 20 Mär, 2008 17:48 
Offline
Freak
Freak
Benutzeravatar

Registriert: Di 01 Mai, 2007 13:57
Beiträge: 1634
Wohnort: Dortmund.
Geschlecht: Männlich
LoGD: Lokal.
Skype: josh.hoiul
MySql hat geschrieben:
InnoDB? :?


Hah ich zwar schon gehört, bzw. gelesen, aber habe keinen blassen schimmer was das ist. Google bringt mich auch gerade nicht so wirklich weiter. o.O

_________________
Never change a running system. Bullshit! ;)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 20 Mär, 2008 18:10 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
Glaube ich dir irgendwie nicht...

http://www.google.de/search?q=InnoDB&ie ... =firefox-a

Der erste eintrag ist bei mir der Wikipedia-Artikel, den ich als gar nicht mal uninformativ empfinde.

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 20 Mär, 2008 19:18 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 15 Okt, 2005 14:06
Beiträge: 864
Geschlecht: Männlich
LoGD: http://shinobilegends.com
Kleiner Hinweis.

"Was lädt die Seite"

"Wo sind meine User meistens (welche Seite(n) werden am meisten aufgerufen"

"Um welchen Betrag von Daten reden wir"

"auf welchem Hostingpaket bin ich, wo sind meine Grenzen"


So, wenn das mal geklärt ist, kann man drangehen.


Es ist nämlich z.B. spitzentoll für einen kleinen Server alles in die Accounts zu lagern, inkl. output. Eine Tabelle, ein Zugriff, alles in die Session. Kann man gut cachen.
Jetzt haben wir einen großen Server, und dann gibts Knatsch weil die Sessions RIESIG werden. Und langsam. Bei genug Ressourcen ist der kleine Flink.

Das ist übrigens eins der Argumente pro 0.97 gegen 1.x.x
0.97 ist rasend schnell...weil rasend wenig drin ist in der Standardinstallation.
Da wird die Datenbank nicht getreten, da braucht man keinen Cache... für 10 queries die page lohnt das nicht.

Aber baut man mal die Charstats voll, gibts 200 queries in der Sekunde ... dann würgt der Server langsam.

Also, bevor man an Flaschenhälsen doktert, die +evtl+ im eigenen Spiel garkeine sind, erstmal Fakten nachschieben.

Ich empfehle z.B. eine Auswerting im page_footer, der in eine statistik tabelle die seite was geschlossen wurde inkl. generationszeit einlagert....
(sowas hab ich in +nb generell rein, btw, weil das wichtig ist)

_________________
Entwicklung Lotgd 1.2.2 +nb
1.2.1 +nb ist final

Bugreports/Testing erwünscht, http://nb-core.org

Wichtige Info für Programmierersucher:
viewtopic.php?f=34&t=4285


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do 20 Mär, 2008 20:21 
Offline
Freak
Freak
Benutzeravatar

Registriert: Di 01 Mai, 2007 13:57
Beiträge: 1634
Wohnort: Dortmund.
Geschlecht: Männlich
LoGD: Lokal.
Skype: josh.hoiul
$this->bbcode_second_pass_code('', 'ALTER TABLE accounts DROP weapon;
ALTER TABLE accounts DROP armor;
ALTER TABLE accounts DROP armordef;
ALTER TABLE accounts DROP weaponatk;
ALTER TABLE accounts DROP weaponvalue;
ALTER TABLE accounts DROP armorvalue;')

Löschen...

$this->bbcode_second_pass_code('', 'ALTER TABLE accounts ADD ausruestung TEXT NOT NULL;
ALTER TABLE accounts ADD ausruestungswerte BIGINT( 50 ) unsigned NOT NULL default 0;')

Erstellen...

$this->bbcode_second_pass_code('', '
output('Waffe: '.$session['user']['ausruestung']['weapon'].'`n'.
'Rüstung: '.$session['user']['ausruestung']['armor'].'`n'.
'Waffenschaden: '.$session['user']['ausruestungswerte']['weapon'].'`n'.
'Rüstungsschaden: '.$session['user']['ausruestungswerte']['armor'].'`n'.
'Waffenpreis: '.$session['user']['ausruestungswerte']['weaponprice'].'`n'.
'Rüstungspreis: '.$session['user']['ausruestungswerte']['armorprice'].'`n');
')

6 Felder gegen 2 getauscht....

Natürlich müssen dann noch überall die Änderungen vorgenommen werden^^

_________________
Never change a running system. Bullshit! ;)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr 21 Mär, 2008 00:04 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Die Waffen sind Items - ich empfehle generell, die auch da zu lassen und mit einem zusätzlichen Feld (vielleicht auch hvalue) die Waffen ausrüsten lassen. Das selbe wie bei Rüstungen. Ermöglicht ziemlich nette Dinge.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 14 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum