Heim  >  Artikel  >  Datenbank  >  Einfache Analyse des allgemeinen MySQL-Abfrageprotokolls und des langsamen Abfrageprotokolls

Einfache Analyse des allgemeinen MySQL-Abfrageprotokolls und des langsamen Abfrageprotokolls

不言
不言nach vorne
2018-10-11 13:58:552420Durchsuche

Dieser Artikel bietet Ihnen eine einfache Analyse des allgemeinen Abfrageprotokolls und des langsamen Abfrageprotokolls. Freunde in Not können darauf zurückgreifen.

Zu den Protokollen in MySQL gehören: Fehlerprotokoll, Binärprotokoll, allgemeines Abfrageprotokoll, langsames Abfrageprotokoll usw. Hier stellen wir hauptsächlich zwei häufig verwendete Funktionen vor: das allgemeine Abfrageprotokoll und das langsame Abfrageprotokoll.

1) Allgemeines Abfrageprotokoll: Zeichnet hergestellte Clientverbindungen und ausgeführte Anweisungen auf.

2) Langsames Abfrageprotokoll: Zeichnen Sie alle Abfragen auf, deren Ausführungszeit LongQueryTime-Sekunden überschreitet, oder Abfragen, die keine Indizes verwenden

(1) Allgemeines Abfrageprotokoll

Allgemeines Protokoll lernen Wann Beim Abfragen müssen Sie die allgemeinen Befehle in den beiden Datenbanken kennen:

1) Variablen wie „%general%“ anzeigen;

kann prüfen, ob die aktuelle allgemeine Protokollabfrage aktiviert ist und ob das general_log Ein Wert von ON bedeutet, dass es eingeschaltet ist, und ein Wert von OFF bedeutet, dass es ausgeschaltet ist (standardmäßig ist es ausgeschaltet).

1) Variablen wie „%log_output%“ anzeigen;

Anzeigen des Formats der aktuellen Ausgabe des langsamen Abfrageprotokolls, das DATEI sein kann (Hostname.log, gespeichert in der Datendatei der Datenbank). ), Es kann auch TABLE sein (mysql.general_log in der Datenbank gespeichert)

Frage: Wie aktiviere ich das allgemeine MySQL-Abfrageprotokoll und wie stelle ich das allgemeine Protokollausgabeformat für die Ausgabe ein?

Allgemeine Protokollabfrage aktivieren: set global general_log=on;

Allgemeine Protokollabfrage deaktivieren: set global general_log=off;

Allgemeine Protokollausgabe im Tabellenmodus festlegen: set global log_output='TABLE';

Stellen Sie die allgemeine Protokollausgabe auf den Dateimodus ein: set global log_output='FILE';

Stellen Sie die allgemeine Protokollausgabe auf den Tabellen- und Dateimodus ein: set global log_output='FILE ,TABLE';

(Hinweis: Der obige Befehl wird nur derzeit wirksam und schlägt fehl, wenn MySQL neu gestartet wird. Wenn Sie möchten, dass er dauerhaft wirksam wird, müssen Sie my.cnf konfigurieren.)

Die Konfiguration der Datei my.cnf lautet wie folgt:

general_log=1 #Ein Wert von 1 bedeutet, dass die allgemeine Protokollabfrage aktiviert ist, ein Wert von 0 bedeutet, dass die allgemeine Protokollabfrage deaktiviert ist

log_output=FILE,TABLE#Legen Sie das Ausgabeformat des allgemeinen Protokolls auf Dateien und Tabellen fest

(2) Langsames Abfrageprotokoll

Das langsame Abfrageprotokoll von MySQL ist ein von MySQL bereitgestellter Protokolldatensatz . Es wird verwendet, um Anweisungen aufzuzeichnen, deren Antwortzeit den Schwellenwert in MySQL überschreitet, und bezieht sich insbesondere auf die Laufzeit, die den Wert long_query_time überschreitet. Das Protokoll wird in das langsame Abfrageprotokoll geschrieben (das Protokoll kann in eine Datei oder Datenbanktabelle geschrieben werden). Da die Leistungsanforderungen hoch sind, wird empfohlen, eine Datei zu schreiben. Standardmäßig aktiviert die MySQL-Datenbank keine langsamen Abfrageprotokolle. Der Standardwert von long_query_time ist 10 (dh 10 Sekunden, normalerweise auf 1 Sekunde festgelegt), dh Anweisungen, die länger als 10 Sekunden ausgeführt werden, sind langsame Abfrageanweisungen.

Im Allgemeinen treten langsame Abfragen in großen Tabellen auf (z. B. beträgt die Datenmenge in einer Tabelle Millionen), und die Felder der Abfragebedingungen sind zu diesem Zeitpunkt nicht indiziert Die Abfragebedingungen sind Vollständiger Tabellenscan, long_query_time ist zeitaufwändig und

ist eine langsame Abfrageanweisung.

Frage: Wie kann überprüft werden, ob das aktuelle Protokoll für langsame Abfragen aktiviert ist?

Geben Sie den Befehl in MySQL ein:

zeigen Sie Variablen wie '%quer%';

Beherrschen Sie hauptsächlich die folgenden Parameter:

(1) Der Wert von slow_query_log ist ON, um das Protokoll für langsame Abfragen zu aktivieren, und OFF, um das Protokoll für langsame Abfragen zu schließen.

(2) Der Wert von slow_query_log_file ist das in der Datei aufgezeichnete langsame Abfrageprotokoll (Hinweis: Der Standardname lautet hostname.log. Ob das langsame Abfrageprotokoll in die angegebene Datei geschrieben wird, müssen Sie angeben Das Ausgabeprotokollformat der langsamen Abfrage ist eine Datei. Der entsprechende Befehl lautet: Variablen wie „%log_output%“ anzeigen, um das Ausgabeformat anzuzeigen.

(3) long_query_time gibt den Schwellenwert für eine langsame Abfrage an. Wenn die Ausführungszeit der Anweisung den Schwellenwert überschreitet, handelt es sich um eine langsame Abfrageanweisung. Der Standardwert beträgt 10 Sekunden.

(4) log_queries_not_using_indexes Wenn der Wert auf ON gesetzt ist, werden alle Abfragen aufgezeichnet, die keine Indizes verwenden (Hinweis: Wenn Sie log_queries_not_using_indexes nur auf ON und slow_query_log auf OFF setzen, wird diese Einstellung nicht wirksam Das heißt, die Voraussetzung dafür, dass diese Einstellung wirksam wird, ist, dass der Wert von slow_query_log auf ON gesetzt ist. Sie wird im Allgemeinen während der Leistungsoptimierung vorübergehend aktiviert.

Frage: Das Ausgabeprotokollformat der langsamen MySQL-Abfrage auf Datei oder Tabelle oder beides festlegen?

Verwenden Sie den Befehl: Variablen wie „%log_output%“ anzeigen;

Sie können das Ausgabeformat anhand des Werts von log_output überprüfen. Der obige Wert ist TABLE. Natürlich können wir das Ausgabeformat auch auf Text festlegen oder Text und Datenbanktabellen gleichzeitig aufzeichnen. Der Einstellungsbefehl lautet wie folgt:

Geben Sie das langsame Abfrageprotokoll in die Tabelle aus (d. h. mysql.slow_log)

set globallog_output='TABLE';

Das langsame Abfrageprotokoll wird nur als Text ausgegeben (dh: die durch slow_query_log_file angegebene Datei)

setglobal log_output ='FILE';

Hier empfehle ich jedem eine Architektur-Lern- und Austauschgruppe. Nummer der Kommunikations- und Lerngruppe: 478030634. Es werden einige von erfahrenen Architekten aufgezeichnete Videos geteilt: Spring, MyBatis, Netty-Quellcode-Analyse, Prinzipien hoher Parallelität, hohe Leistung, verteilt, Microservice-Architektur, JVM-Leistungsoptimierung, verteilte Architektur usw. Diese sind zu einem notwendigen Wissenssystem für Architekten geworden. Sie können auch kostenlose Lernressourcen erhalten, und ich profitiere bisher sehr davon

Langsame Abfrageprotokolle werden gleichzeitig in Text und Tabellen ausgegeben

setglobal log_output='FILE,TABLE';

Über die Daten in der Tabelle von langsame Abfrageprotokolle Analyse des Datenformats im Text:

Der langsame Abfrageprotokolldatensatz in der Tabelle myql.slow_log hat das folgende Format:

Einfache Analyse des allgemeinen MySQL-Abfrageprotokolls und des langsamen Abfrageprotokolls

Langsame Abfrage Das Protokoll wird in der Datei hostname.log im folgenden Format aufgezeichnet:

Einfache Analyse des allgemeinen MySQL-Abfrageprotokolls und des langsamen Abfrageprotokolls

Sie können sehen, ob dies der Fall ist B. eine Tabelle oder eine Datei, wird insbesondere Folgendes aufgezeichnet: Ja, diese Anweisung verursachte die langsame Abfrage (sql_text), die Abfragezeit (query_time), die Tabellensperrzeit (Lock_time) der langsamen Abfrageanweisung und die Anzahl der gescannten Zeilen (rows_examined). ) und andere Informationen.

Frage: Wie kann die Anzahl der aktuellen langsamen Abfrageanweisungen abgefragt werden?

Es gibt eine Variable in MySQL, die die Anzahl der aktuellen langsamen Abfrageanweisungen aufzeichnet:

Geben Sie den Befehl ein: show global status like '%slow%';

Einfache Analyse des allgemeinen MySQL-Abfrageprotokolls und des langsamen Abfrageprotokolls

(Hinweis: Wenn bei allen oben genannten Befehlen die Parameter über die MySQL-Shell festgelegt werden und MySQL neu gestartet wird, sind alle festgelegten Parameter ungültig. Wenn Sie möchten dauerhaft wirksam, Konfigurationsparameter müssen in die Datei my.cnf geschrieben werden).

Zusätzlicher Wissenspunkt: Wie verwende ich MySQLs eigenes Protokollanalysetool für langsame Abfragen, mysqldumpslow, um Protokolle zu analysieren?

perlmysqldumpslow –s c –t 10 slow-query.log

Die spezifischen Parametereinstellungen lauten wie folgt:

-s gibt an, wie sortiert wird, c, t, l, r Sie sind nach der Anzahl der Datensätze, der Zeit, der Abfragezeit und der Anzahl der zurückgegebenen Datensätze sortiert. ac, at, al und ar stellen entsprechende Rückblenden dar.

-t steht für top und die folgenden Daten stellt dar, wie vielen Zeilen vor

-g ein regulärer Ausdrucksabgleich folgen kann, bei dem die Groß-/Kleinschreibung nicht beachtet wird.

Einfache Analyse des allgemeinen MySQL-Abfrageprotokolls und des langsamen Abfrageprotokolls

Die oben genannten Parameter haben folgende Bedeutung:

Anzahl:414 Die Anweisung kommt 414 Mal vor

Zeit = 3,51 s (1454) Die maximale Ausführungszeit beträgt 3,51 s und die kumulierte Gesamtzeit beträgt 1454 s; Die Wartezeit für die Sperre beträgt 0 Sekunden : Das Mysqldumpslow-Skript ist in Perl-Sprache geschrieben, insbesondere in Mysqldumpslow. Die Verwendung wird später besprochen)

Frage: Woher wissen Sie im eigentlichen Lernprozess, dass die eingestellte langsame Abfrage effektiv ist?

Es ist sehr einfach, eine langsame Abfrageanweisung zu generieren. Wenn beispielsweise der Wert unserer langsamen Abfrage log_query_time auf 1 gesetzt ist, können wir die folgende Anweisung ausführen:

selectsleep (1);

Diese Anweisung ist die langsame Abfrageanweisung. Anschließend können Sie überprüfen, ob diese Anweisung in der entsprechenden Protokollausgabedatei oder -tabelle vorhanden ist.

Das obige ist der detaillierte Inhalt vonEinfache Analyse des allgemeinen MySQL-Abfrageprotokolls und des langsamen Abfrageprotokolls. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen