oli: Zugriffszeit auf MySQL DB

Hallo, ich bins nochmals.

Also mir wurde gesagt, es ist umständlich auf einer HP für jeden user eigene Tabellen anzulegen (zb: create ".$username."table; ), ich konnte aber nicht herrausfinden wieso, daher habe ich die Zugriffszeiten getestet, mit folgendem Ergebniss:

Anlegen |Zugriffszeit   |löschen

1 DB je 5000 Tabellen 59 sec 10.000 = 5 sec >1 sec
5 DB je 1000 Tabellen 70 sec 10.000 = 4 sec >1 sec
1000 DB je 5 Tabellen 90 sec 10.000 = 4 sec 35 sec

Jdesmal also 5000 Datensätze, nur unterschiedlich aufgeteilt.

Aus diesem Test geht für mich hervor, dass die Zugriffszeit immer in etwa 0.4 ms pro Select abfrage ist. Nur das Anlegen und löschen dauert etwas länger, was aber pro user ja sowieso nur einmal vor kommt, also eigentlich auch egal ist.

Meine Fragen:

  1. Warum ist es umständlich für jeden user eigene Tabellen anzulegen (also z.b. für seine Post)?

  2. Diese Zugriffszeiten habe ich auf meinem Rechner (512 DDR Ram) gemacht, wie würden sie sich auf einem durchschnittlichen Webserver(5-10 Euro/Monat) verhalten (schneller? langsamer?)

  3. Wie sieht die mir zur verfügung stehende Rechnerleistung auf einem Webserver aus, also gibt es dafür beschränkungen, oder bekomme ich soviel, wie sich gerade ausgeht (Tageszeit abhängig)?

Bitte um Antwort

lg
Oli

  1. Hallo

    Also mir wurde gesagt, es ist umständlich auf einer HP für jeden user eigene Tabellen anzulegen

    Nein, es ist nicht umständlich, es ist ausgesprochen grottiges Datenbankdesign.

    (zb: create ".$username."table; ), ich konnte aber nicht herrausfinden wieso, daher habe ich die Zugriffszeiten getestet, mit folgendem Ergebniss:

    Anlegen |Zugriffszeit   |löschen

    1 DB je 5000 Tabellen 59 sec 10.000 = 5 sec >1 sec
    5 DB je 1000 Tabellen 70 sec 10.000 = 4 sec >1 sec
    1000 DB je 5 Tabellen 90 sec 10.000 = 4 sec 35 sec

    Irrelevant. Im Normalfall sollte es für eine DB-Anwendung nicht erforderlich sein, irgendwelche Tabellen nach der Ersteinrichtung der Anwendung zu erstellen (von temporären Tabellen in Stored Procedures für bestimmte Spezialaktionen mal abgesehen).

    Jdesmal also 5000 Datensätze, nur unterschiedlich aufgeteilt.

    Aus diesem Test geht für mich hervor, dass die Zugriffszeit immer in etwa 0.4 ms pro Select abfrage ist. Nur das Anlegen und löschen dauert etwas länger, was aber pro user ja sowieso nur einmal vor kommt, also eigentlich auch egal ist.

    Irrelevant, es ist miserables Design bei einem relationalen Datenbankmanagementsystem (DBMS) wie MySQL.

    1. Warum ist es umständlich für jeden user eigene Tabellen anzulegen (also z.b. für seine Post)?

    Weil gleichartige Daten in eine *einzige* Tabelle gehören. Sie lassen sich dort wunderbar abfragen.

    1. Diese Zugriffszeiten habe ich auf meinem Rechner (512 DDR Ram) gemacht, wie würden sie sich auf einem durchschnittlichen Webserver(5-10 Euro/Monat) verhalten (schneller? langsamer?)

    irrelevant.

    1. Wie sieht die mir zur verfügung stehende Rechnerleistung auf einem Webserver aus, also gibt es dafür beschränkungen, oder bekomme ich soviel, wie sich gerade ausgeht (Tageszeit abhängig)?

    das kann Dir höchstens Dein Provider sagen. Du denkst zu kurzsichtig. Fragen wie: Was ist die höchste Post-Zahl, die an einem Tag erreicht wurde, kannst Du bei einer Tabelle simpel beantworten, bei Deinem Design: viel Spass.

    Du verwendest ein relationales Datenbankmanagementsystem und solltest Deine Anwendung nicht gegen das DBMS designen. Möchtest Du es anders, solltest Du ein DBMS verwenden, dass Deine Wünsche unterstützt (siehe Abschnitt Kritik).

    Freundliche Grüße

    Vinzenz

    1. Ok, danke euch.

      Hab mir das jetzt angesehen, und werde mein Design bestmöglich dem anpassen.

      Also die Post die sich die User zuschicken speichere ich einfach in eine Tabelle mit userid_absender und userid_empfaenger, oder damits noch ein bischen schneller geht user_a und user_e :)

      lg

  2. Hi,

    Also mir wurde gesagt, es ist umständlich auf einer HP für jeden user eigene Tabellen anzulegen

    es widerspricht allen Prinzipien, denen Datenbanken unterliegen.

    (zb: create ".$username."table; ), ich konnte aber nicht herrausfinden wieso, daher habe ich die Zugriffszeiten getestet, mit folgendem Ergebniss:

    Dann teste es mal mit _einer_ Tabelle in _einer_ Datenbank und einem Index auf die User-ID-Spalte.

    Auf die grundlegenden Gründe, warum gleichförmige Daten in eine einzige Tabelle gehören, will ich gar nicht eingehen; das darfst Du Dir selbst recherchieren. Aber:

    1. Warum ist es umständlich für jeden user eigene Tabellen anzulegen (also z.b. für seine Post)?

    Stell mal zwischenzeitlich fest, dass jeder Nutzer eine zusätzliche Information gespeichert haben muss.

    1. Diese Zugriffszeiten habe ich auf meinem Rechner (512 DDR Ram) gemacht, wie würden sie sich auf einem durchschnittlichen Webserver(5-10 Euro/Monat) verhalten (schneller? langsamer?)

    Irrelevant. Deine Überlegungen sind nicht praxistauglich.

    1. Wie sieht die mir zur verfügung stehende Rechnerleistung auf einem Webserver aus, also gibt es dafür beschränkungen, oder bekomme ich soviel, wie sich gerade ausgeht (Tageszeit abhängig)?

    Befrage hierzu Deinen Provider.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  3. Hi oli!

    Als Ergänzung zu Vinzenz und Cheatah.

    1. Warum ist es umständlich für jeden user eigene Tabellen anzulegen (also z.b. für seine Post)?

    Weil du idealerweise mit einem Datenbankzugriff arbeitest, der die erforderlichen Rechte (CREATE, ALTER und DROP TABLE) nicht besitzt.
    Dass man bei Webhostingangeboten meistens diese Rechte hat, ist mir bewusst.

    Aber außerdem gibt es Nachteile bei einer großen Anzahl von Tabellen in derselben Datenbank.

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. echo $begrüßung;

      Aber außerdem gibt es Nachteile bei einer großen Anzahl von Tabellen in derselben Datenbank.

      In der deutschen Übersetzung, die außerdem für eine zukünftige Version MySQLs gilt, sind die Überschriften der Kapitel "Nachteile der Erzeugung großer Mengen von Tabellen in derselben Datenbank" und "Warum gibt es so viele offene Tabellen?" vertauscht. Vergleiche Überschrift und Inhalte der englischen Version und der deutschen Version.

      echo "$verabschiedung $name";