2014-03-24 10 views
6

Meine MySQL-Versionsdetails sindWie aktiviere ich das langsame Abfrageprotokoll von MySQL?

  1. Server: Localhost über UNIX-Socket
  2. Software: MySQL
  3. Software-Version: 5.0.96-community-log - MySQL Community Edition (GPL)
  4. Protocol Version : 10

Wie aktiviere ich das langsame Abfrageprotokoll von MySQL?

+3

Wenn ich Typ in google gibt es 10 Ergebnisse "Wie MySQL Log für langsame Abfragen ermöglichen", die Sie sofort Copypaste Ergebnisse. Warum googelst du nicht, bevor du Fragen stellst? Es ist schneller und es vermeidet Leute, die dir -1 wie ich geben. –

+0

@ N.B. Dinge sind, wenn Sie Ihre Google-Suche heute machen, ist diese Frage das zweite Ergebnis. Die Wendungen des Lebens ... –

Antwort

1

Wenn Ihr Server über 5.1.6 ist, können Sie das langsame Abfrageprotokoll in der Laufzeit selbst festlegen. Für die müssen Sie diese Abfragen ausführen.

set global log_slow_queries = 1; 
set global slow_query_log_file = <some file name>; 

Oder alternativ können Sie die diese Optionen in den my.cnf/my.ini Option Dateien

log_slow_queries = 1; 
slow_query_log_file = <some file name>; 

gesetzt Siehe: http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_slow_query_log_file

+0

Got error # 1238 - Variable 'log_slow_queries' ist eine schreibgeschützte Variable – John

+0

Seit MySQL Version weniger als 5.1 überprüfen Sie diese http://stackoverflow.com/questions/2403793/how-can-i-enable -mysqls-slow-query-log-ohne-Neustart-mysql –

+0

Seit 5.6.1 wird 'log_sloq_queries' durch' slow_query_log' ersetzt - https://dev.mysql.com/doc/refman/5.6/en/server -system-variables.html # sysvar_slow_query_log –

33

Version 5.1.6 und höher:

1. Geben Sie MySQL ein ll und führen Sie den folgenden Befehl ein:

set global slow_query_log = 'ON';

2. alle anderen gewünschten Optionen aktivieren. Hier sind einige typische Beispiele:

Protokolldetails für Abfragen zu erwarten alle Zeilen abzurufen, anstatt einen Index verwenden:

set global log_queries_not_using_indexes = 'ON' 

Stellen Sie den Pfad zu dem langsamen Abfrageprotokoll:

set global slow_query_log_file ='/var/log/mysql/slow-query.log'; 

Legen Sie fest, wie lange eine Abfrage ausgeführt werden muss, bevor sie protokolliert wird:

set global long_query_time = '20'; 
    (default is 10 seconds) 

3. Bestätigen Sie die Änderungen aktiv sind, indem die Schale MySQL Eingabe und dem folgenden Befehl:

show variables like '%slow%'; 

Versionen unter 5.1.6:

  1. Bearbeiten Sie die Datei /etc/my.cnf mit Ihrem bevorzugten Texteditor vi /etc/my.cnf

  2. Fügen Sie die folgende Zeile unter dem Abschnitt "[mysqld]" hinzu.Fühlen Sie sich frei, den Weg in die Protokolldatei zu aktualisieren, was Sie wollen:

    log-slow-queries=/var/log/mysql/slow-query.log

3. Aktivieren Sie zusätzliche Optionen nach Bedarf. Hier sind die gleichen häufigsten verwendeten Beispiele von oben:

Stellen Sie die Zeit, eine Abfrage, bevor sie ausgeführt werden muss protokolliert werden:

`long_query_time=20 
    (default is 10 seconds)` 

Protokolldetails für Abfragen zu erwarten alle Zeilen abrufen statt unter Verwendung eines Index:

`log-queries-not-using-indexes` 

4. Starten Sie den MySQL-Dienst:

service mysqld restart 

5. Bestätigen Sie die Änderung aktiv ist, indem die MySQL Shell Eingabe und Ausführen des folgenden:

show variables like '%slow%'; 

Update: 1

Nach docs MySQL, den Fehler # 1193 tritt auf, wenn Sie falschen Code für SQLSTATE verwenden.

Message: Unknown system variable %s 

Und wie Sie auf der gleichen Seite sehen können, ist das SQLSTATE 99003 nicht definiert.

beziehen sich auf diesen Link:

http://dev.mysql.com/doc/refman/5.5/en/slow-query-log.html

http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html

+0

# 1193 - Unbekannte Systemvariable 'slow_query_log' – John

+0

Was oben zu tun ist Fehler wird angezeigt während "set global slow_query_log = 'ON';" Befehl ausführen über phpmyadmin – John

+0

@John, schau auf mein Update: 1 Antwort. – jmail

Verwandte Themen