Wie soll ich das Auslesen von riesigen Datenmängen optimieren?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wie soll ich das Auslesen von riesigen Datenmängen optimieren?

    Hallo,

    ich habe hier eine Tabelle mit der ich Aktionen auf meiner Website protokolliere und diese nach ihrem Datum sortiert ausgebe.

    Das Problem das ich habe ist, dass jeden Tag sehr viele Einträge dazu kommen und die Ladezeit deutlich gestiegen ist.

    Könnt ihr mit irgendwelche Tipps geben, wie man das Auslesen bzw Strukturieren von solchen riesigen Tabellen strukturieren kann?

    Also ich habe schon etwas Ahnung von mysql und habe die Datenbank auch in der 3. Normalform und redundanzfrei aufgebaut.

    soo.. danke für jeden Tipp!
    Zuletzt geändert von BananaJo; 18.08.2009, 22:40.

  • #2
    Du musst ja nicht alles auf einmal anzeigen. Stattdessen könntest du nur jeweils einen Tag darstellen und zusätzlich eine Art anklickbaren Kalender, um den anzuzeigenden Tag zu wechseln.
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      cache die informationen in ne php als array und ließ sie da aus

      mfg jura
      [FONT=Comic Sans MS]Hab ich dir erfolgreich geholfen? Wenn ja, dann hilf mir auch und bewerte mich auf php-resource.de[/FONT]
      [FONT=Comic Sans MS]
      [/FONT][FONT=Comic Sans MS]Go and help me[/FONT]

      Kommentar


      • #4
        Zitat von CiaoSen Beitrag anzeigen
        cache die informationen in ne php als array und ließ sie da aus
        Inwiefern würde das denn helfen?

        Gruß,

        Anja
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          bitte
          1) 'show cteate table deinetabelle' anzeigen
          2) query, die du bei bei der anzeige benztzt (ohne PHP-Variablen)
          3) die grösse von Tabelle (select count(*) from tabelle)
          Slava
          bituniverse.com

          Kommentar


          • #6
            @Amica

            damit spart er sich die mysql abfragen von so vielen Datensätzen.
            Die kannt er ja dann Monatlich cachen und die neuesten evt. aus der db lesen oder auch cachen und das ist dann um einiges schneller.

            Speichern kann er die trotzdem noch in der db.

            mfg jura
            [FONT=Comic Sans MS]Hab ich dir erfolgreich geholfen? Wenn ja, dann hilf mir auch und bewerte mich auf php-resource.de[/FONT]
            [FONT=Comic Sans MS]
            [/FONT][FONT=Comic Sans MS]Go and help me[/FONT]

            Kommentar


            • #7
              @CiaoSen

              Wo sollen die denn hin gecachet werden? Das versteh ich nicht. Du meintest in ein PHP Array. Das ergibt doch keinen Sinn, etwas in einem Kontext zu cachen, der nur für den Bruchteil einer Sekunde existiert, wie z. B. ein PHP Skript.
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #8
                also entwerder verstehst du mich nicht oder ich dich.

                was ich meine ist, er will ja aktionen protokolliere, es könnten sachen für statistiken sein oder die schritte die gemacht werden bevor ein fehler passiert.
                Und solche sachen cached man für eine längere Zeit, deswegen die informationen in eine php datei schreiben die über php erzeugt wird.
                Und diese daten sollen in dem erzeugtem file als array stehen, damit er es später leichter hat die auszugeben.
                Wie er es anstellen will weiß ich nicht, aber das ist nur ein vorschlag um die ladezeit der seite zu verkürzen.

                mfg jura
                [FONT=Comic Sans MS]Hab ich dir erfolgreich geholfen? Wenn ja, dann hilf mir auch und bewerte mich auf php-resource.de[/FONT]
                [FONT=Comic Sans MS]
                [/FONT][FONT=Comic Sans MS]Go and help me[/FONT]

                Kommentar


                • #9
                  Ich hab dich nicht verstanden, jetzt weiß ich aber, dass du eine Datei meinst.
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar


                  • #10
                    Was soll jetzt optimiert werden? Das INSERT oder SELECT?

                    Wenn SELECT: Wie CiaoSen schon sagte, könntest du die Daten irgendwie cachen. Das habe ich zwangsweise auch mal gemacht, da eine normale Seite um die 3 Sekunden zum Generieren gebraucht hat.

                    Ich habe mir dann eine lookup-table programmiert, die direkt den ganzen Output einer Seite mit ob_start() und Familie gespeichert hat.

                    Logik war dann beim Aufruf folgende:

                    Code:
                    if (is_cached("startseite"))
                        print_cache("startseite");
                    else
                        startseite_generieren_cachen_ausgeben();
                    Immer, wenn sich dann etwas auf der Startseite verändert hat, wird der Cache-Eintrag "startseite" gelöscht und neu generiert. Natürlich muss man nicht direkt eine ganze Seite cachen, man kann auch nur Teile einer Seite cachen. Das könnte nützlich sein, wenn du auf ältere Daten stehst (bzw. könnteste auch automatisch jede Minute den Cache aktualisieren).

                    Alternativ könnte ich mir vorstellen, dass es viel helfen würde, wenn du die Tabelle kleinhälst. Das heißt, wenn du z.B. mehr als eine Millionen Einträge hast, legst du eine neue Tabelle an. Das sollte eigentlich gut funktionieren, denn ich glaube nicht, dass du immer 100% der Daten auf einmal anzeigen musst.

                    hope dat helps

                    Kommentar

                    Lädt...
                    X