SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Handbuch der Java-Programmierung

Handbuch der Java-Programmierung zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 15.11.2008, 23:16:51
Phaltôn
Guest
 
Beiträge: n/a
Lieber mehrere Tabellen oder viele Spalten?

Hallo zusammen :)

Ich betreibe ein Browsergame (das werde ich hier jetzt nicht nennen^^).
Serverseitig gibt es in diesem Spiel eine Tabelle für die Benutzer. Die Spalten dieser Tabelle steigen immer mehr, da ich immer mehr Funktionen und Speicherwerte pro Benutzer brauche.

Ganz einfache Frage: Soll ich das lieber irgendwann auf zwei Tabellen aufteilen? Oder in einer lassen?

Momentan beträgt die Anzahl der Spalten 80. Das Spiel läuft wunderbar (aus meiner Sicht); ich weiß allerdings nicht, ob es noch schneller ginge ;)

Falls noch irgendwelche Informationen benötigt werden, werde ich diese gerne nennen!

Gruß und in Hoffnung auf Hilfe :)

Phaltôn
Mit Zitat antworten
  #2  
Alt 16.11.2008, 07:17:35
Crisps Crisps ist offline
Junior Member
 
Registriert seit: Oct 2008
Alter: 47
Beiträge: 274
AW: Lieber mehrere Tabellen oder viele Spalten?

Eine Normalisierung der Tabellen ist vorzuziehen und kann die Performance verbessern. Zeig doch mal die "CREATE TABLE..." deiner jetzigen Tabellen und einen typischen Dateneintrag, vielleicht kann man dann mehr dazu sagen.

*Edit: Ich glaub ich hab dich falsch verstanden. Wenn es keinen guten Grund (wie z.B. Normalisierung) gibt, dann ist es nicht nötig eine Tabelle einfach so aufzuteilen. Du kannst deine User Tabelle also ruhig 'in einem Stück' lassen. :D

Geändert von Crisps (16.11.2008 um 08:29:08 Uhr)
Mit Zitat antworten
  #3  
Alt 16.11.2008, 09:54:45
Phaltôn
Guest
 
Beiträge: n/a
AW: Lieber mehrere Tabellen oder viele Spalten?

Den Begriff Normalisierung musste ich erst mal nachschlagen, kannte ich nich ^^
Bin aber zum Schluss gekommen, dass das nicht so gaaanz das ist, was ich wollte :D

Das heßt, selbst wenn jetzt noch 70 Spalten dazukommen, soll ich lieber bei einer Tabelle bleiben? Das kann nämlich gut passieren...
Dennoch würde ich so ziemlich alle Einträge brauchen und müsste sonst an manchen stellen lästige JOINs oder zusätzliche Abfragen machen... Auch nicht optimal...

Den CreateTable-Befehl kann ich nicht ohne weiteres hier posten. Könnte ihn dir höchstens per PN schicken oder mit anderen Spaltentiteln...
Mit Zitat antworten
  #4  
Alt 16.11.2008, 10:38:52
Crisps Crisps ist offline
Junior Member
 
Registriert seit: Oct 2008
Alter: 47
Beiträge: 274
AW: Lieber mehrere Tabellen oder viele Spalten?

Wenn Du sowieso immer alle Spalten brauchst, wäre es unnötig die Tabelle einfach so grundlos zu trennen. MySQL selbst hat ja ein Limit von 3398 möglichen Spalten, also sollte das technisch gesehen kein Problem sein - auch wenn das natürlich nicht sehr übersichtlich ist.

Was man allerdings unbedingt vermeiden sollte wäre ein solches Design:
Code:
freund1_id | freund2_id | freund3_id | ... etc.
Zitat:
Den CreateTable-Befehl kann ich nicht ohne weiteres hier posten. Könnte ihn dir höchstens per PN schicken oder mit anderen Spaltentiteln...
Höchst mysteriös :D
Ok, wenn du trotzdem willst, dass ich mir das mal anschaue, kannst du es ja per PM schicken.
Mit Zitat antworten
  #5  
Alt 16.11.2008, 10:41:06
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
AW: Lieber mehrere Tabellen oder viele Spalten?

die performance ist grösser, wenn du die daten auf mehrere tabellen verteilst. das wird besonders deutlich, wenn du dir überlegst, was innerhalb der db bei lese- und schreibzugriffen passiert; stichwort table locking:

http://dev.mysql.com/doc/refman/6.0/...ng-issues.html

du hast bereits jetzt 80 spalten in deiner benutzer-tabelle...? das riecht nach schlechtem db-design. mach dir mal ein paar gedanken, welche daten tatsächlich user-spezifisch sind (username, pwd, email etc.) und welche daten lediglich durch eine fremdbeziehung mit einem user in verbindung gebracht werden (spielstände, logs, settings etc.).

normaliserung war ja bereits ein hinweis; wenn du damit nicht vertraut bist, wird's höchste zeit .-

http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)

cx
Mit Zitat antworten
  #6  
Alt 16.11.2008, 10:43:04
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
AW: Lieber mehrere Tabellen oder viele Spalten?

Zitat:
Zitat von Phaltôn Beitrag anzeigen
Den CreateTable-Befehl kann ich nicht ohne weiteres hier posten. Könnte ihn dir höchstens per PN schicken oder mit anderen Spaltentiteln...
und wieso nicht? wenn du dein wissen für dich behälst (warum auch immer), behalte ich mein wissen auch vorerst für mich.
Mit Zitat antworten
  #7  
Alt 16.11.2008, 11:00:59
Phaltôn
Guest
 
Beiträge: n/a
AW: Lieber mehrere Tabellen oder viele Spalten?

Umfassende Antwort folgt ^^

Zitat:
Zitat von Crisps Beitrag anzeigen
Wenn Du sowieso immer alle Spalten brauchst, wäre es unnötig die Tabelle einfach so grundlos zu trennen. MySQL selbst hat ja ein Limit von 3398 möglichen Spalten, also sollte das technisch gesehen kein Problem sein - auch wenn das natürlich nicht sehr übersichtlich ist.
Das ist schon mal gut...Wichtig wäre neben den Limits natürlich auch die Performance :)

Zitat:
Zitat von Crisps Beitrag anzeigen
Was man allerdings unbedingt vermeiden sollte wäre ein solches Design:
Code:
freund1_id | freund2_id | freund3_id | ... etc.
In der Tat, stattdessen habe ich z.B. entweder 1. nen String mit | geteilt genommen oder 2. eine neue Tabelle gemacht ;)


Zitat:
Zitat von Crisps Beitrag anzeigen
Höchst mysteriös :D
Ok, wenn du trotzdem willst, dass ich mir das mal anschaue, kannst du es ja per PM schicken.
Mach ich gerne. Wollte das nur nicht hier so offen rumposten...

Zitat:
Zitat von cortex Beitrag anzeigen
die performance ist grösser, wenn du die daten auf mehrere tabellen verteilst. das wird besonders deutlich, wenn du dir überlegst, was innerhalb der db bei lese- und schreibzugriffen passiert; stichwort table locking:

http://dev.mysql.com/doc/refman/6.0/...ng-issues.html
Schau ich mir mal an und überleg ich mir mal...
Trotzdem ist mir ganz deutlich aufgefallen: Jede neue Abfrage aus PHP braucht erst mal eine Grundzeit. Das heißt: Mit jeder neuen Abfrage steigt zwingend die Ladezeit - je größer die Tabelle bzw. je größer die Datenmengen, desto mehr Zeit wird gebraucht (ist so meine Erfahrung).

Zitat:
Zitat von cortex Beitrag anzeigen
du hast bereits jetzt 80 spalten in deiner benutzer-tabelle...? das riecht nach schlechtem db-design. mach dir mal ein paar gedanken, welche daten tatsächlich user-spezifisch sind (username, pwd, email etc.) und welche daten lediglich durch eine fremdbeziehung mit einem user in verbindung gebracht werden (spielstände, logs, settings etc.).
Manche Spalten sind in der Tat Settings. Die werden aber benötigt, z.B. sind manche Settings die Position (X, Y), der Online-Status oder aber auch nur, wie viele Lebenspunkte der Spieler hat und was seine Werte sind.
Mit ID, Name, Passwort, EMail, X, Y, Status, Angriff, Verteidigung, Lebenspunkte, Maxlebenspunkte sind wir schon mal bei 11. Das geht rasend schnell in die Höhe, es gehören dann noch Sachen wie Vergiftung (Time-Datensatz, bis wann) oder Profil und Stufe usw.
Ich denke, dass bei einem Browsergame schon erwartet werden kann, dass viele Spalten benötigt werden! Ob es nun 80 sein müssen - keine Ahnung.

Zitat:
Zitat von cortex Beitrag anzeigen
normaliserung war ja bereits ein hinweis; wenn du damit nicht vertraut bist, wird's höchste zeit .-

http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)
In Ordnung...
EDIT: Ich wusste zwar nicht, was Normalisierung ist, aber ich glaube, das tue ich bereits...
Wenn ich eine Tabelle mit Items habe, weise ich dem Item eine UserID zu, die auf nen Benutzer verweist. Das ist denke ich sowas...


Zitat:
Zitat von feuervogel Beitrag anzeigen
und wieso nicht? wenn du dein wissen für dich behälst (warum auch immer), behalte ich mein wissen auch vorerst für mich.
Es tut mir Leid, ich kann es hier leider nicht öffentlich posten. Die Daten würden spielinterne (serverseitige) Vorgänge enthüllen und demnach evtl. nur neue Ideen für Hacker usw öffnen.
Außerdem: Wer gibt schon freiwillig seinen SourceCode her ^^
Wenn du möchstest, kann ich ihn dir auch gerne schicken. Aber das ganze hier zu "verewgigen" und für alle Suchmaschinen zugänglich zu machen - nein, danke ;)

Geändert von Phaltôn (16.11.2008 um 11:05:14 Uhr) Grund: Normalisierung
Mit Zitat antworten
  #8  
Alt 16.11.2008, 11:14:14
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
AW: Lieber mehrere Tabellen oder viele Spalten?

Zitat:
Zitat von Phaltôn Beitrag anzeigen
Es tut mir Leid, ich kann es hier leider nicht öffentlich posten. Die Daten würden spielinterne (serverseitige) Vorgänge enthüllen und demnach evtl. nur neue Ideen für Hacker usw öffnen.
Aha. Sowas hab ich mir schon fast gedacht. Wenn sich ein Browserspiel "hacken" lässt, weil Du das Datenbankschema veröffentlichst, krankt es doch an ganz anderer stelle. Naja, für einen kleinen Lacker am morgen hats gereicht.

Zitat:
Außerdem: Wer gibt schon freiwillig seinen SourceCode her ^^
Öhm, *hust* ... open source ... *hust*.

Außerdem: Wenn ich will, dass mir "die Öffentlichkeit" bei meinen Programmierproblemen hilft, zeige ich der Öffentlichkeit meinen Quellcode. Zumal ich jetzt - und ich will dir nicht zu Nahe treten - nicht irgendwelchen gottgesandten Code erwarte, dessen Geheimhaltung der wichtigste Schritt auf dem Weg zur Weltherrschafft ist.

Zitat:
Wenn du möchstest, kann ich ihn dir auch gerne schicken. Aber das ganze hier zu "verewgigen" und für alle Suchmaschinen zugänglich zu machen - nein, danke ;)
Ich verzichte.
Mit Zitat antworten
  #9  
Alt 16.11.2008, 11:21:21
Phaltôn
Guest
 
Beiträge: n/a
AW: Lieber mehrere Tabellen oder viele Spalten?

Zitat:
Zitat von feuervogel Beitrag anzeigen
Aha. Sowas hab ich mir schon fast gedacht. Wenn sich ein Browserspiel "hacken" lässt, weil Du das Datenbankschema veröffentlichst, krankt es doch an ganz anderer stelle. Naja, für einen kleinen Lacker am morgen hats gereicht.
...wer ist schon perfekt? Ich jedenfalls nicht.
Und wenn ich verhindern will, dass in 10 Jahren noch Suchmaschinen meinen Quellcode in diesem Forum finden, lasse ich das lieber ;)

Zitat:
Zitat von feuervogel Beitrag anzeigen
Öhm, *hust* ... open source ... *hust*.
Ach ja... OpenSource is was tolles, wenn noch nicht mal das eigene Spiel fertig ist, ne. Schließlich sind ja auch alle Spiele im Internet OpenSource, dem sollte man natürlich folgen... Tue ich aber trotzdem nicht :P

Zitat:
Zitat von feuervogel Beitrag anzeigen
Außerdem: Wenn ich will, dass mir "die Öffentlichkeit" bei meinen Programmierproblemen hilft, zeige ich der Öffentlichkeit meinen Quellcode. Zumal ich jetzt - und ich will dir nicht zu Nahe treten - nicht irgendwelchen gottgesandten Code erwarte, dessen Geheimhaltung der wichtigste Schritt auf dem Weg zur Weltherrschafft ist.
Deswegen habe ich dir ja vorgeschlagen, ihn per PN zu schicken.
Hör mal, ich weiß, dass ich keine spezielle Hilfe erwarten kann. Trotzdem ist es ja meine Entscheidung. Wenn mir nicht geholfen wird, hattest du Recht und ich lag wohl falsch.

Zitat:
Zitat von feuervogel Beitrag anzeigen
Ich verzichte.
Wie du willst, mir ist es gleich.

Ich bitte dich jetzt darum, diesen Forenkrieg zu beenden. Ich will dir nix böses und werde dich auch nicht weiter stören.
Mit Zitat antworten
  #10  
Alt 16.11.2008, 11:52:46
Crisps Crisps ist offline
Junior Member
 
Registriert seit: Oct 2008
Alter: 47
Beiträge: 274
AW: Lieber mehrere Tabellen oder viele Spalten?

Um das ganze noch etwas komplizierter zu machen:
Maybe Normalizing Isn't Normal: http://www.codinghorror.com/blog/archives/001152.html
und http://de.wikipedia.org/wiki/Denormalisierung

So verwendet(e?) z.B. Flickr für seine tag-clouds ein denormalisiertes DB Design. Es hängt also ganz davon ab, wie man seine Applikation und die DB verwendet. Allerdings kann man durchaus sagen, dass ein denormalisiertes Design oft schneller ist als ein normalisiertes - dafür aber auch deutlich fehleranfälliger.

Zitat:
Trotzdem ist mir ganz deutlich aufgefallen: Jede neue Abfrage aus PHP braucht erst mal eine Grundzeit. Das heißt: Mit jeder neuen Abfrage steigt zwingend die Ladezeit - je größer die Tabelle bzw. je größer die Datenmengen, desto mehr Zeit wird gebraucht (ist so meine Erfahrung).
Das kann natürlich auch an PHP selbst liegen, oder besser gesagt der verwendete Code der die Abfrage verwertet. Vielleicht kannst du die verwendete Abfrage mal in phpMyAdmin eingeben - Wenn sie auch dort langsam ist, liegt es wahrscheinlich an der Query selbst und/oder an einem nicht adequaten Index in der Tabelle.

Geändert von Crisps (16.11.2008 um 11:53:28 Uhr)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Groß- und Kleinschreibung bei Tabellen und Spalten KartoffelKiffer MySQLi/PDO/(MySQL) 11 10.07.2008 13:48:53
2 Tabellen vermischen thorben MySQLi/PDO/(MySQL) 9 09.10.2007 23:06:24
Abfrage nach letztem Datum über mehrere Tabellen delalE MySQLi/PDO/(MySQL) 27 13.06.2007 18:00:40
2 Tabellen zusammenfassen. Problem! basti123456 MySQLi/PDO/(MySQL) 4 03.02.2006 08:01:08
Problem mit 2 tabellen spalten in einer while schleife ! akasa PHP Grundlagen 6 08.06.2005 14:00:07


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:48:12 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt