Zusammenfassung des Wissens zu langsamen MySQL-Protokollen

Zusammenfassung des Wissens zu langsamen MySQL-Protokollen

1. Einführung in Slow Log

Der vollständige Name des Slow Log lautet „Slow Query Log“. Es wird hauptsächlich zum Aufzeichnen von SQL-Anweisungen verwendet, deren Ausführung in MySQL länger als eine bestimmte Zeit dauert. Durch das Protokoll langsamer Abfragen können Sie herausfinden, welche Anweisungen eine geringe Ausführungseffizienz aufweisen, um sie zu optimieren.

Standardmäßig ist in MySQL kein Slow-Log aktiviert. Sie können das Slow-Log aktivieren, indem Sie den Parameter slow_query_log ändern. Die mit langsamen Protokollen verbundenen Parameter werden wie folgt eingeführt:

  • slow_query_log: Gibt an, ob das langsame Abfrageprotokoll aktiviert werden soll. Der Standardwert ist 0. Er kann auf 0 oder 1 gesetzt werden. 1 bedeutet aktiviert.
  • slow_query_log_file: Gibt den Speicherort und Namen des langsamen Abfrageprotokolls an. Der Standardwert ist host_name-slow.log. Ein absoluter Pfad kann angegeben werden.
  • long_query_time: Schwellenwert für langsame Abfrageausführungszeit. Wenn die Zeit diesen Schwellenwert überschreitet, wird die Abfrage aufgezeichnet. Der Standardwert beträgt 10 Sekunden.
  • log_output: Das Ausgabeziel des langsamen Abfrageprotokolls. Der Standardwert ist „file“, was bedeutet, dass das Protokoll in eine Datei ausgegeben wird.
  • log_timestamps: steuert hauptsächlich die Anzeigezeitzone in den Protokolldateien Fehlerprotokoll, langsames Protokoll und allgemeines Protokoll. Standardmäßig wird die Zeitzone UTC verwendet. Es wird empfohlen, sie in die Systemzeitzone SYSTEM zu ändern.
  • log_queries_not_using_indexes: Gibt an, ob alle Abfrageanweisungen protokolliert werden sollen, die keine Indizes verwenden. Die Standardeinstellung ist deaktiviert.
  • min_examined_row_limit: SQL-Anweisungen mit einer Abfragescannummer, die kleiner als dieser Parameter ist, werden nicht im langsamen Abfrageprotokoll aufgezeichnet. Der Standardwert ist 0.
  • log_slow_admin_statements: Gibt an, ob langsame Verwaltungsanweisungen in das langsame Protokoll geschrieben werden. Zu den Verwaltungsanweisungen gehören „Alter Table“, „Create Index“ usw. Der Standardwert ist „Off“, was bedeutet, dass sie nicht geschrieben werden.

Im Allgemeinen müssen wir nur die langsame Protokollierung aktivieren und die Schwellenzeit konfigurieren, und die verbleibenden Parameter können standardmäßig konfiguriert werden. Die Schwellenzeit lässt sich flexibel anpassen, beispielsweise auf 1s oder 3s festlegen.

2. Langsames Protokolltraining

In der Konfigurationsdatei können wir die folgenden langsamen Protokollparameter festlegen:

# Konfiguration im Zusammenhang mit dem langsamen Abfrageprotokoll. Sie können vim /etc/my.cnf entsprechend der tatsächlichen Situation ändern.
 [mysqld]
 slow_query_log = 1
slow_query_log_file = /data/mysql/logs/slow.log
lange_Abfragezeit = 1
log_timestamps = SYSTEM
log_output = DATEI

Schauen wir uns genauer an, was das Slow-Log aufzeichnet. Lassen Sie uns eine langsamere SQL-Abfrage ausführen und sehen, wie sie sich im langsamen Protokoll widerspiegelt.

# Die SQL-Ausführungszeit überschreitet den Schwellenwert# Zeit: 2021-05-13T17:38:03.687811+08:00
# Benutzer@Host: root[root] @ [192.168.85.0] ID: 2604943
# Abfragezeit: 1,099889 Sperrzeit: 0,000144 Gesendete Zeilen: 39 Untersuchte Zeilen: 45305
SET-Zeitstempel=1620898683;
Wählen Sie * aus Testtabelle, wobei Spaltenname wie „%Test%“ lautet.

Wenn das langsame Abfrageprotokoll aktiviert ist und DATEI als Ausgabeziel ausgewählt ist, beginnt jede in das Protokoll geschriebene Anweisung mit einem #-Zeichen. Für jede Gruppe langsamer SQL-Anweisungen zeichnet die erste Zeile die Zeit auf, zu der die SQL-Anweisung ausgeführt wird (wenn der Parameter log_timestamps UTC ist, wird die Zeit in der UTC-Zeitzone angezeigt), die zweite Zeile zeichnet den Benutzer und die IP-Adresse auf, die die Anweisung ausgeführt haben, sowie die Verbindungs-ID. Die Felder in der dritten Zeile werden wie folgt erklärt:

  • Query_time: Dauer der Anweisungsausführungszeit in Sekunden.
  • Lock_time: Dauer. Die Zeit zum Erlangen der Sperre (in Sekunden).
  • Rows_sent: N Die Anzahl der an den Client gesendeten Zeilen.
  • Rows_examined: N Die Anzahl der auf Serverebene untersuchten Zeilen (ohne Berücksichtigung etwaiger Verarbeitungen innerhalb der Speicher-Engine).

Die folgenden beiden Zeilen enthalten den Zeitstempel der Ausführung dieser Anweisung und das spezifische langsame SQL.

In tatsächlichen Umgebungen wird davon abgeraten, den Parameter log_queries_not_using_indexes zu aktivieren, da die Aktivierung dieses Parameters dazu führen kann, dass das langsame Protokoll schnell wächst. Zum Screening und zur Analyse langsamer Protokolle können wir Tools wie mysqldumpslow und pt-query-digest zur Analyse verwenden. Langsame Protokolldateien müssen regelmäßig archiviert werden. Sie können beispielsweise das langsame Protokoll vorübergehend schließen, die alte Datei umbenennen und das langsame Protokoll dann erneut öffnen. Dadurch wird es in die neue Protokolldatei geschrieben, wodurch die Protokollgröße effektiv reduziert wird.

Oben finden Sie den detaillierten Inhalt der Zusammenfassung des Wissens zu langsamen MySQL-Protokollen. Weitere Informationen zu langsamen MySQL-Protokollen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • So aktivieren Sie das langsame Abfrageprotokoll im Docker-MySQL-Container
  • Lösung zur Optimierung langsamer MySQL-Abfragen
  • Detailliertes Beispiel zum Auffinden und Optimieren langsamer SQL-Abfragen in MySQL
  • MySQL-Optimierungslösung: Aktivieren Sie das Protokoll für langsame Abfragen
  • Gründe, warum MySQL-Abfragen langsam sind
  • Fallstricke bei langsamen MySQL-Abfragen
  • Umfassendes Verständnis des MySQL-Protokolls für langsame Abfragen
  • So finden Sie schnell langsames SQL in MySQL

<<:  CSS realisiert die Szenenanalyse von halbtransparenten Rändern und Mehrfachrändern

>>:  Detaillierte Erläuterung der Docker Swarm-Dienstorchestrierungsbefehle

Artikel empfehlen

Was tun, wenn Sie Ihr Passwort in MySQL 5.7.17 vergessen?

1. Skip-Grant-Tables zur Datei my.ini hinzufügen ...

Beispiel einer DOM-Operationstabelle (DOM erstellt Tabelle)

1. Erstellen Sie eine Tabelle mit HTML-Tags: Code...

MySQL kontrolliert die Anzahl der Versuche, falsche Passwörter einzugeben

1. So überwachen Sie MySQL-Deadlocks in Produktio...

...

So ändern Sie schnell die Tabellenstruktur einer MySQL-Tabelle

Tabellenstruktur einer MySQL-Tabelle schnell ände...

Detaillierte Erläuterung der MySQL Master-Slave-Datenbankkonstruktionsmethode

Dieser Artikel beschreibt, wie man eine MySQL Mas...

So richten Sie Textfelder in mehreren Formularen in HTML aus

Der Formularcode ist wie in der Abbildung dargest...

Detaillierte Analyse des React Native-Startvorgangs

Einführung: Dieser Artikel verwendet das von reac...

Zusammenfassung der Unterschiede zwischen SQL und NoSQL

Hauptunterschiede: 1. Typ SQL-Datenbanken werden ...

js implementiert das Umschalten von Bildern per Maus (ohne Timer)

In diesem Artikelbeispiel wird der spezifische Co...