Sven: MySQL: Gibt es Statistiken?

Hallo ihr,

führt MySQL irgendwelche Statistiken? Ich würde meine Tabellen gerne mit Indizes ausstatten, um die Suchzeiten zu begrenzen... bevor ich aber jede(!) php-Seite durchwühle und nachgucke welche Abfragen dort laufen, wäre es einfacher, wenn ich mir die häufigst benutzten Abfragen anzeigen lassen könnte.

Führt MySQL solche Statistiken? Oder etwas vergleichbares, um den Aufwand zu reduzieren?

Lg
Sven

  1. Führt MySQL solche Statistiken? Oder etwas vergleichbares, um den Aufwand zu reduzieren?

    Hmm, nicht dass ich wüsste.
    Aber du kannst mit der Option "log_slow_queries" eine Log-Datei über langsame Queries generieren lassen, wobei du "langsam" selbst mit einer Konfigurationsoption definierst. Du könntest dir z.B. so alle Queries ausspucken lassen, die länger als 0,01s benötigen.
    Damit lässt sich denk ich ermitteln, wo Indizes nötig wären.

    Gruß,
    Andreas

    1. Hello,

      Führt MySQL solche Statistiken? Oder etwas vergleichbares, um den Aufwand zu reduzieren?

      Hmm, nicht dass ich wüsste.

      MxSQL hat ein Tool: mysqlbinlog bzw. mysqlbinlog.exe, dass binäre Logs lesbar machen kann. Soweit ich mich erinnere, kann man in so einem binären Log (Bytecode-Log) auch jedes Query loggen lassen.

      Allerdings meine ich, dass ich das damals sehr schnell wieder abgeschaltet habe, weil es zu schnell voll lief, jedenfalls wesentlich schneller, als ein Apache Request-Log.

      Ein harzliches Glückauf

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Hello,

        Führt MySQL solche Statistiken? Oder etwas vergleichbares, um den Aufwand zu reduzieren?

        Hmm, nicht dass ich wüsste.

        MxSQL hat ein Tool: mysqlbinlog bzw. mysqlbinlog.exe, dass binäre Logs lesbar machen kann. Soweit ich mich erinnere, kann man in so einem binären Log (Bytecode-Log) auch jedes Query loggen lassen.

        Allerdings meine ich, dass ich das damals sehr schnell wieder abgeschaltet habe, weil es zu schnell voll lief, jedenfalls wesentlich schneller, als ein Apache Request-Log.

        Ich habe da noch alte Notizen gefunden:

        log-bin = mysql-bin

        Mit dieser Zeile in der my.cnf wurde das aktiviert.
        Das Log wird übrigens normalerweise für die Replication der DB benötigt und MUSS daher JEDES Query loggen, wenn die Daten zweier synchronisierter Instanzen konsistent bleiben sollen.

        Ein harzliches Glückauf

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de