Kann ich das langsame Abfrageprotokoll speziell für nur eine Datenbank aktivieren?
Was ich derzeit getan habe, ist, das gesamte Protokoll in Excel zu übernehmen und dann einen Pivot-Bericht auszuführen, um herauszufinden, welche Datenbank am langsamsten ist. Also habe ich einige Änderungen an dieser Anwendung vorgenommen, in der Hoffnung, das langsame Auftreten von Abfragen zu reduzieren. Anstatt meinen Pivot-Bericht erneut auszuführen, was einige Zeit in Anspruch nahm, um die Daten zu bereinigen, gab ich lieber nur langsame Abfragen aus der einen Datenbank aus
möglich?
Antworten:
Ich habe etwas Unorthodoxes, wenn Sie wirklich ein langsames Abfrageprotokoll für eine bestimmte Datenbank haben möchten. Denken Sie daran, dass das, was ich vorschlagen werde, für MySQL 5.1.30 und höher funktioniert:
Schritt 01) Fügen Sie diese zunächst zu /etc/my.cnf hinzu
Mit der Protokollausgabe können Sie die Ausgabe allgemeiner und langsamer Protokolle als Tabellen und nicht als Textdateien festlegen.
Schritt 02) Service MySQL Neustart
Das MySQL-Schema enthält eine Tabelle mit dem Namen slow_log
Führen Sie dies in MySQL aus
Es sollte eine CSV-Tabelle sein.
Schritt 03) Konvertieren Sie es in MyISAM und indizieren Sie die Tabelle in der Spalte start_time
Es sollte so aussehen
Beachten Sie, dass eine der Spalten db ist . Sie sollten einen zusätzlichen Index wie folgt hinzufügen:
Von hier aus können Sie eine von drei (3) Optionen ausführen
OPTION 1: Fragen Sie mysql.slow_log nach der gewünschten Datenbank ab
OPTION 2: Löschen Sie alle Einträge in mysql.slow_log, die nicht von Whateverdbiwant stammen
OPTION 3: Kopieren Sie alle Einträge in eine andere slow_log-Tabelle, aus der Sie abfragen können
Versuche es !!!
UPDATE 20.06.2011 18:08 EDT
Ich habe eine zusätzliche unorthodoxe Idee, die Ihnen gefallen könnte.
Versuchen Sie, die .MYD und .MYI der MyISAM-Tabelle für die langsame Anmeldung auf ein anderes Festplatten-Volume zu verschieben. Sie verknüpfen /var/lib/mysql/mysql/slow_log.MYD und /var/lib/mysql/mysql/slow_log.MYI mit dem neuen Speicherort der realen .MYD und .MYI.
Wenn Sie das für verrückt hielten, finden Sie hier eine weitere unorthodoxe Idee, die Ihnen gefallen könnte.
Wenn Sie die binäre Protokollierung bereits aktiviert haben, richten Sie die Replikation ein, um die langsame in eine andere Box zu verschieben. Wie um alles in der Welt machst du das ???
Schritt 01) Richten Sie den Replikations-Slave mit dieser Option ein
Schritt 02) Aktivieren Sie das langsame Protokoll auf dem Slave
Schritt 03) Führen Sie diesen Befehl auf dem Master aus
Durch die Verwendung der BLACKHOLE- Speicher-Engine werden Festplatten-E / A für das langsame Protokoll auf dem Master eliminiert. Der Slave ist so eingerichtet, dass sein einziger Zweck darin besteht, Einträge für mysql.slow_log zu sammeln.
quelle
Ich glaube nicht, dass Sie solche Optionen in MySQL zur Verfügung haben, aber es gibt Möglichkeiten, wie Sie sie erhalten können. Ich habe in Google nach Ihnen gesucht und einige interessante Links gefunden, die Ihnen bei der Lösung Ihres Problems helfen könnten.
Hoffe das ist hilfreich:
http://code.google.com/p/mysql-log-filter/
http://www.maatkit.org/doc/mk-query-digest.html
quelle