Christopher Reimann: Geschwindigkeit

Hi,

ich würd gern grundsätzlich über eine MySQL Datenbank erlernen, wie sich Geschwindigkeiten einschätzen lassen.

Ich überlege derzeit, ob es schneller wäre, aus verschiedenen Tabellen bei einem Seitenaufruf immer Daten zusammenzutragen oder aus einer Datei lesen zu lassen, die den Wert bei Bedarf per Dateifunktionen angegeben bekommt.

Kennt jemand einen guten Artikel zu Datenbankgeschwindigkeit (mysql)?

Ps.: Wieso soll ich bei Google lange recherchieren, wenn ich auf Expertenerfahrung in diesem Forum bauen kann?

  1. Hi,

    Ps.: Wieso soll ich bei Google lange recherchieren, wenn ich auf Expertenerfahrung in diesem Forum bauen kann?

    weil die Experten hier von Dir erwarten, dass Du erst mal selbst (englisch: SELF) versuchst, ein Problem zu lösen.

    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
    1. Es bliebe beim SELF, ließe sich die Quelle erfahren, wo es sich expertenmäßig erkundigen ließe.

      Es macht in meinen Augen keinen Sinn, lange Zeit Artikel, die bei Google aufgefunden wurden, zu übersehen und einzuschätzen, wenn es auf der anderen Hand die Chance gibt, sich von Gleichgesinnten Hinweise auf ohnehin gute Artikel geben lassen zu können.

    2. yo,

      weil die Experten hier von Dir erwarten, dass Du erst mal selbst (englisch: SELF) versuchst, ein Problem zu lösen.

      der spruch ist nun schon so abgedroschen, da wachsen einem bärte wie bei zz top. und wenn man schon den namen missbrauchen will, dann sollte man es richtig tun. er bezieht sich nämlich auf HTML. seine frage geht aber in den bereich mysql.....

      Ilja

  2. Zuallerst solltest du dich fragen, wie 'dynamisch' ist deine Website.
    Wenn sich der Inhalt der Website alle 10 Minuten ändert, dann lohnt es sich höchstwahrscheinlich eine Datei zu erstellen, und um es noch genauer zu spezifizieren, eine HTML-Datei !

    Ansonsten habe ich bisher nichts Schnelleres gefunden als mySQL.
    Vorrausgesetzt, du connectest sowieso zur Datenbank und es sind mehr als 10 Datensätze, die du verarbeiten willst.

    Was hingegen das Optimieren von mySQL angeht, das müsstest du deine Fragen präzissieren, denke ich mal,...

    Gruß,
    Flash

    1. yo,

      Wenn sich der Inhalt der Website alle 10 Minuten ändert, dann lohnt es sich höchstwahrscheinlich eine Datei zu erstellen, und um es noch genauer zu spezifizieren, eine HTML-Datei !

      hmm, dem kann ich nicht ganz folgen, warum sollte eine so dynamische webseite durch eine html-datei abgebildet werden ? wäre es nicht sehr umständlich, diese html-datei alle 10 minuten zu bearbeiten oder stehe ich da jetzt auf dem schlauch ?

      Ansonsten habe ich bisher nichts Schnelleres gefunden als mySQL.

      so eine aussage ist meiner meinung nach gar nicht möglich. erstens müßte man dafür etliche rdbms kennen und unter gleichen bedingungen getetstet haben. zum anderen hat man immer eine spezielle umgebung und problemlösung, wo je nach situation das eine oder andere rdbms stärken und schwächen hat. deine aussage halte ich deshalb für zu pauschal. es gibt viele sinnvolle funktionen, die mysql gar nicht kennt, zum beispiel einen index über eine funktion.

      Ilja

      1. 你好 Ilja,

        Wenn sich der Inhalt der Website alle 10 Minuten ändert, dann lohnt es
        sich höchstwahrscheinlich eine Datei zu erstellen, und um es noch
        genauer zu spezifizieren, eine HTML-Datei !

        hmm, dem kann ich nicht ganz folgen, warum sollte eine so dynamische
        webseite durch eine html-datei abgebildet werden ? wäre es nicht sehr
        umständlich, diese html-datei alle 10 minuten zu bearbeiten oder stehe
        ich da jetzt auf dem schlauch ?

        Die HTML-Seite kann ja automagisch generiert werden. Das ist ja durchaus
        ein sinnvoller Vorschlag, der sehr viel Entlastung bringt.

        再见,
         克里斯蒂安

        --
        Buchpreisbindung? | Plasma-Bildschirm geklaut
        Fatal! Ich kann kein Reserve-Offizier mehr sein!
        http://wwwtech.de/
        1. Die HTML-Seite kann ja automagisch generiert werden. Das ist ja durchaus
          ein sinnvoller Vorschlag, der sehr viel Entlastung bringt.

          Eine Website mit PHP und mySQL zu erstellen dauert immer eine gewisse Zeit.
          Und selbst wenn es nur ne Sekunde dauert, wenn du 100 Abrufe auf einmal hast, dann wartest du schon fast zwei Minuten nur um immer wieder den gleichen Inhalt zu berechnen.

          Mein Vorgehen bei solchen Seiten ist folgendermaßen:
          Lesen -> die HTML-Seite
          Ändern / Schreiben -> in die Datenbank und anschliessend HTML - Seite erstellen.

          ---

          Was Geschwindigkeit dann selber angeht: mySQL oder eine andere Datenbanksprache werden sich da nicht viel geben.
          Aber gerade bei großen Datenmengen und den typischen Datenbankoperationen haben Datenbanksprachen halt die beste Optimierung bei dem erstellen der Datensätze.

          Gruß,
          Flash

          1. Guten Morgen flashnfantasy,

            Eine Website mit PHP und mySQL zu erstellen dauert immer eine gewisse Zeit.
            Und selbst wenn es nur ne Sekunde dauert, wenn du 100 Abrufe auf einmal hast, dann wartest du schon fast zwei Minuten nur um immer wieder den gleichen Inhalt zu berechnen.

            "nur ne Sekunde" ist in der heutigen Datenverarbeitung eine halbe Ewigkeit.
            Je nach Aufgabe sollte ein Programm nach wenigen Millisekunden die Daten aus der Datenbank ausgelesen und aufbereitet an den Webserver übergeben haben.

            Das bei vielen gleichzeitigen Aufrufen der Server mehr ausgelastet wird, und dadurch auch die Berarbeitungszeit pro Aufruf steigt ist ein anderes Thema, welches aber auch zu optimieren ist.

            Herzliche Grüße aus Weinsberg
            Helmut Weber

            --
            -------------------------------------------
            Mode ist eine Variable, Stil eine Konstante
            1. Das bei vielen gleichzeitigen Aufrufen der Server mehr ausgelastet wird, und dadurch auch die Berarbeitungszeit pro Aufruf steigt ist ein anderes Thema, welches aber auch zu optimieren ist.

              Nur eben wie? Gibts da online Artikel zu? Optimierung von MySQL-Abfragen etc.?

              1. Hallo Christopher,

                Das bei vielen gleichzeitigen Aufrufen der Server mehr ausgelastet wird, und dadurch auch die Berarbeitungszeit pro Aufruf steigt ist ein anderes Thema, welches aber auch zu optimieren ist.

                Nur eben wie? Gibts da online Artikel zu? Optimierung von MySQL-Abfragen etc.?

                dann fang' doch mal mit entsprechenden Kapitel im MySQL-Handbuch an. Selbstredend sind die Möglichkeiten, wie fast immer bei MySQL, in einem gewissen Maße von der Version abhängig.

                Freundliche Grüße

                Vinzenz

              2. 你好 Christopher,

                Das bei vielen gleichzeitigen Aufrufen der Server mehr ausgelastet
                wird, und dadurch auch die Berarbeitungszeit pro Aufruf steigt ist ein
                anderes Thema, welches aber auch zu optimieren ist.

                Nur eben wie? Gibts da online Artikel zu? Optimierung von MySQL-Abfragen
                etc.?

                Dazu kann es in dem Sinne keinen Artikel geben. Die Performance eines DBMS
                hängt unter anderem auch stark von den verwendeten Features und dem Design
                der speziellen Datenbank ab. Es gibt zwar ein paar grundlegende Fakten und
                Arbeitsweisen, die man kennen muss (nämlich wie sich welche Features einer
                Datenbank auswirken und wie arbeitet ein Mechanismus), aber darüber hinaus
                hilft zur Optimierung im wesentlichen nur der Sachverstand und EXPLAIN.

                再见,
                 克里斯蒂安

                --
                Buchpreisbindung? | Plasma-Bildschirm geklaut
                Wenn du gehst, gehe. Wenn du sitzt, sitze. Und vor allem: schwanke nicht!
                http://wwwtech.de/
          2. Hi flashnfantasy

            Was Geschwindigkeit dann selber angeht: mySQL oder eine andere Datenbanksprache werden sich da nicht viel geben.

            *prust* Das glaubst auch nur du. Da sind teilweise Welten zwischen den einzelnen DBMSen. MySQL ist btw auch keine Sprache sondern ein DBMS mit einem eigenen SQL-Dialekt.

            Aber gerade bei großen Datenmengen und den typischen Datenbankoperationen haben Datenbanksprachen halt die beste Optimierung bei dem erstellen der Datensätze.

            Nein, prinzipiell ist ein optimal an die Daten angepasster Algorithmus immer performanter, die Frage ist nur, ob es sich lohnt den Preis für den teilweise kleinen Unterschied in Performance und den riesigen Unterschied in Entwicklungskosten zu zahlen.

            Gruss Daniela

  3. Moin!

    ich würd gern grundsätzlich über eine MySQL Datenbank erlernen, wie sich Geschwindigkeiten einschätzen lassen.

    Kannst du den Satz vielleicht noch mal anders formulieren? Er ist nämlich ziemlich mehrdeutig, und selbst wenn man den im Kontext wahrscheinlichsten Sinn nimmt, keinesfalls verständlich.

    Ich überlege derzeit, ob es schneller wäre, aus verschiedenen Tabellen bei einem Seitenaufruf immer Daten zusammenzutragen oder aus einer Datei lesen zu lassen, die den Wert bei Bedarf per Dateifunktionen angegeben bekommt.

    "If you can't measure it - don't optimize it".

    Oder anders gesagt: Beides programmieren, beides vom Zeitaufwand her ausmessen und das schnellere dann nehmen. Wobei die möglichen Begleitumstände natürlich bei der Messung zu berücksichtigen sind. Es dürfte also kaum ausreichend sein, exakt EINEN Zugriff je Methode zu messen, sondern es müssen selbstverständlich MEHRERE PARALLELE Zugriffe auch in der Messung berücksichtigt werden, denn Besucher greifen ja auch parallel zu.

    Kennt jemand einen guten Artikel zu Datenbankgeschwindigkeit (mysql)?

    Was soll denn in einem Artikel zu Datenbankgeschwindigkeit drinstehen?

    Entweder gibt es Artikel, die ein gegebenes Setup, also eine definierte größere Datenbank, mit unterschiedlichen Datenbanken (mysql, pgsql, Oracle, DB2,...) einspielen und diversen "praxisnahen" Abfragen unterwerfen - und davon jeweils die Zeit messen und am Ende einen "schnellste Datenbank ist"-Sieger küren.

    Dann gibts Artikel, die konkret bei einer gegebenen Datenbank alle möglichen Optimierungsmöglichkeiten durchkauen, also beispielsweise die Cachegröße im RAM, irgendwelche internen Block-Größen, vielleicht auch die Abhängigkeit vom Dateisystem oder von der zugrundeliegenden Festplatten_Architektur (SCSI vs. IDE, Single Drive vs. RAID 0 vs. RAID 1 vs. RAID 5).

    Aber keiner dieser Artikel bespricht, ob und in welcher Form es überhaupt sinnvoll ist, eine Datenbank einzusetzen oder stattdessen vielleicht lieber nur mit Dateien zu arbeiten - oder welche Optimierungsmöglichkeiten bestehen können, tatsächlich als zu langsam empfundene Datenbankzugriffe durch schnellere Methoden wie z.B. Caching zu ersetzen.

    Das Problem ist: Solche Optimierungen erfordern zunächst mal ein konkretes Problem auf einem existierenden System. Denn nur wenn tatsächlich ein realer Anwendungsfall mit seinen individuellen Ausprägungen existiert, kann man nach einem Optimierungsversuch ja tatsächlich sehen, ob eine Verbesserung eingetreten ist, oder nicht.

    Außerdem gibt es so dermaßen viele individuelle Möglichkeiten einer Datenbankabfrage und damit zusammenhängender Möglichkeiten, dass es kaum in einem Artikel eine einzige goldene Lösung geben kann.

    Um nur mal zwei Beispiele zu nennen:
    1. Es ist sicherlich absolut nicht sinnvoll, die Suchergebnisseiten von Google in irgendeinen Cache zu schreiben, um beim nächsten Mal schnelleren Zugriff darauf zu kriegen.

    2. Andererseits ist es vermutlich ziemlich sinnvoll, anstelle einer immer wieder dynamisch zusammengestellten Website, auf der sich die Inhalte einer Seite aber maximal einmal im Monat verändern, diese Website einmal als statisches HTML zu generieren und dann darauf zuzugreifen. ABER: Würdest du diese Generierung auch dann noch einbauen wollen, wenn diese statische Website aus einer Millionen Dokumenten besteht, die Generierung einer einzigen Seite eine Sekunde benötigt, und es für den Betrieb der Website zwingend erforderlich ist, dass die eine monatliche Änderung zeitlich exakt und sehr zeitnah veröffentlicht wird?

    Du siehst also: Deine bisherige Fragestellung ist so dünn und allgemein gestellt - dass du da keine Artikel finden wirst, selbst wenn du suchen würdest, ist mir schon klar.

    - Sven Rautenberg

    --
    My sssignature, my preciousssss!
  4. Hi,

    ich würd gern grundsätzlich über eine MySQL Datenbank erlernen, wie sich Geschwindigkeiten einschätzen lassen.

    Ich wuerde es vorziehen wenn Du grundsaetzlich erlernst wie Du Geschwindigkeiten einschaetzt.

    Ich überlege derzeit, ob es schneller wäre

    Kann sein, kann nicht sein.
    Nein, das war schon Absicht, das ich genau hier abgeschnitten habe.

    Es kommt darauf an, was Du machen moechtest.
    Grundsaetzlich sei Dir aber mal verraten, auch wenn ich glaube, das Du das schon weisst, das die schnellste Methode immer die ist, gar nichts zu tun. Im Computerbereich ist das mittlerweile preiswert zu haben, denn der Preis: Speicherplatz ist niedrig und wird immer niedriger.
    Also: erstmal cachen was das Zeug haelt. Wenn Du es schaffst, alle Deine Variationen fertig als gzipptes HTML vorzuhalten bist Du auf jeden Fall um einiges schneller als bei jeder Anfrage erstmal die Daten aus der DB zu holen (das teuerste ueberhaupt), zusammenzubauen (je nach Anzahl der Teile, die von der Platte geholt werden muessen kann das auch recht teuer werden) und vor dem Versand zu gzippen (zwar recht preiswert aber auch keineswegs umsonst zu haben).

    Alles, was Du davon cachen kannst bringt mehr, als eine DB-Microoptimierung.
    Du kannst eine DB versauen, sei es durch unglueckliche Abfragen (meist einfach unnoetig viele) und/oder ungluecklich gebaute Tabellen. Du kanst jedoch keine ordentlich gebastelte DB mit anstaendigen Abfragen sinnvoll optimieren. Das kostet soviele Arbeitsstunden, das eine dickere und/oder zweite Maschine auf jeden Fall geunstiger kommt.

    Ps.: Wieso soll ich bei Google lange recherchieren, wenn ich auf Expertenerfahrung in diesem Forum bauen kann?

    Weil das in Grossbuchstaben auf der Eintrittskarte steht.

    Ich weiss ja, das Du das, was ich Dir hier erzaehlt habe hoechstwahrscheinlich ignorieren wirst. Du willst unbedingt ein paar Takte bei der DB-Abfrage einsparen und Dich interessiert rein gar nicht, das Du tausende davon bei jeder ueberfluesigen Abfrage verschleuderst.

    Aber was reg' ich mich auf ...

    so short

    Christoph Zurnieden