Heim  >  Artikel  >  Datenbank  >  Der Unterschied zwischen normalen und langsamen Abfrageprotokollen in MySQL

Der Unterschied zwischen normalen und langsamen Abfrageprotokollen in MySQL

一个新手
一个新手Original
2017-09-08 10:12:491435Durchsuche


Einführung

<br/>


In einer früheren Freigabe wurde erwähnt, dass der Protokolltyp von MySQL unterteilt werden kann in Drei Typen: Fehlerprotokoll (error_log), Abfrageprotokoll (query_log) und Binärprotokoll (binary_log), siehe error_log im MySQL-Protokoll. In diesem Artikel werden hauptsächlich die Prinzipien und die Verwendung von general_log und slow_query_log vorgestellt.

Allgemeines Abfrageprotokoll

Das allgemeine Abfrageprotokoll (general_log) wird hauptsächlich zum Abfragen relevanter Informationen verwendet, wenn jeder Client eine Verbindung zur Datenbank herstellt und SQL-Anweisungen in der Datenbankkonfiguration ausführt Methode Für:

1. Überprüfen Sie, ob das allgemeine Abfrageprotokoll aktiviert ist und dessen Speicherpfad:

mysql> show variables like "general_log%";
+------------------+------------------------------+| Variable_name    | Value                        |
+------------------+------------------------------+| general_log      | OFF                           |
| general_log_file | /var/lib/mysql/localhost.log |
+------------------+------------------------------+
2 rows in set (0.00 sec)

In der Bildschirmausgabe general_log und general_log_file Notieren Sie die aktuelle allgemeine Abfrage. Den Schalterstatus und den Pfad des Protokolls.

2. Aktivieren Sie das allgemeine Abfrageprotokoll

    set global general_log = ON

Ob die Abfrage erfolgreich ist:

mysql> show variables like "general_log%";
+------------------+------------------------------+| Variable_name    | Value                        |
+------------------+------------------------------+| general_log      | ON                           |
| general_log_file | /var/lib/mysql/localhost.log |
+------------------+------------------------------+
2 rows in set (0.00 sec)

Erfolg.

Verlassen Sie den Vorgang und prüfen Sie, ob er korrekt generiert und aufgezeichnet wird:

[root@localhost ~]# cat /var/lib/mysql/localhost.log
/usr/sbin/mysqld, Version: 5.7.19 (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
2017-08-14T09:33:11.364650Z     5 Quit  
2017-08-14T09:33:20.671113Z     6 Connect   root@localhost on  using Socket
2017-08-14T09:33:20.671323Z     6 Query select @@version_comment limit 1
2017-08-14T09:33:22.964610Z     6 Query show variables like &#39;%log%&#39;
2017-08-14T09:33:24.574224Z     6 Quit

Erfolgreich, und wir können sehen, dass das Protokoll nicht nur den SQL-Befehl aufzeichnet, sondern auch die Ausführungszeit und die ID enthält , Befehlstyp und andere zugehörige Daten

Protokoll langsamer Abfragen

Das Protokoll langsamer Abfragen zeichnet Anweisungen auf, deren SQL-Anweisungszeit die voreingestellte long_query_time überschreitet, wenn die Datenmenge beträgt Mit „large“ können Sie sehen, welche Anweisungen im langsamen Abfrageprotokoll optimiert werden müssen.

1. Konfiguration des langsamen Abfrageprotokolls

Die Konfiguration des langsamen Abfrageprotokolls finden Sie in der Datenbankkonfigurationsdatei my.cnf:

[root@localhost ~]# cat /etc/my.cnf | grep -E &#39;long|slow|not_using_indexes&#39;long_query_time = 1#log-slow-queries = /var/log/mysql/slow.loglog_queries_not_using_indexes

Sie können sehen:

long_query_time = 1 bedeutet, dass, wenn die Ausführungszeit der SQL-Anweisung 1s überschreitet, dies die Einstellung des langsamen Abfrageprotokollpfads ist; 🎜>
Das bedeutet, dass Anweisungen, die keine Indizes verwenden, das Aufzeichnungsziel reduzieren könnenlog-slow-queries = /var/log/mysql/slow.log
Die tatsächliche Konfiguration ist dieselbe wie beim allgemeinen Abfrageprotokoll. Geben Sie den Befehl in die interaktive MySQL-Schnittstelle ein, um die langsame Abfrage zu aktivieren log: log_queries_not_using_indexes

2. Überprüfen Sie, ob die Abfrage erfolgreich ist
    set slow_query_log = ON

Erfolg.

[root@localhost ~]# cat /var/lib/mysql/localhost-slow.log
/usr/sbin/mysqld, Version: 5.7.19 (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
Beachten Sie jedoch, dass slow_query_log möglicherweise Anweisungen zu Benutzerberechtigungen und Passwörtern aufzeichnet. Achten Sie daher bitte auf die sichere Speicherung von Protokollen, wenn Sie Protokolldateien für langsame Abfragen verwenden.

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen normalen und langsamen Abfrageprotokollen in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn