Analyse der Prinzipien der MySQL Slow Query-bezogenen Parameter

Analyse der Prinzipien der MySQL Slow Query-bezogenen Parameter

MySQL Slow Query, dessen vollständiger Name „Slow Query Log“ lautet, ist ein von MySQL bereitgestellter Protokolldatensatz, der zum Aufzeichnen von Anweisungen in MySQL verwendet wird, deren Antwortzeit den Schwellenwert überschreitet. In einer bestimmten Umgebung werden SQL-Anweisungen, deren Ausführungszeit den Wert „long_query_time“ überschreitet, im Protokoll für langsame Abfragen aufgezeichnet. Der Standardwert von long_query_time ist 10, was bedeutet, dass Anweisungen, die länger als 10 Sekunden ausgeführt werden, protokolliert werden. Standardmäßig startet die MySQL-Datenbank das Protokoll für langsame Abfragen nicht und dieser Parameter muss manuell festgelegt werden.

Wenn es für die Optimierung nicht erforderlich ist, ist es natürlich im Allgemeinen nicht empfehlenswert, diesen Parameter zu aktivieren, da die Aktivierung langsamer Abfrageprotokolle mehr oder weniger gewisse Auswirkungen auf die Leistung hat.

Darüber hinaus unterstützt das Slow Query Log das Schreiben von Protokolldatensätzen in Dateien und Datenbanktabellen.

Erläuterung der Parameter für langsame MySQL-Abfragen:

  • l slow_query_log: Gibt an, ob das Protokoll für langsame Abfragen aktiviert werden soll. 1 bedeutet aktiviert, 0 bedeutet deaktiviert.
  • l log-slow-queries: Der Speicherpfad des Protokolls für langsame Abfragen der alten Version (Version unter 5.6) der MySQL-Datenbank. Sie können diesen Parameter ungesetzt lassen, das System greift dann standardmäßig auf die Datei host_name-slow.log zu
  • l slow-query-log-file: Der Speicherpfad des langsamen Abfrageprotokolls der neuen Version (5.6 und höher) der MySQL-Datenbank. Sie können diesen Parameter ungesetzt lassen, das System greift dann standardmäßig auf die Datei host_name-slow.log zu
  • l long_query_time: Schwellenwert für langsame Abfragen. Wenn die Abfragezeit den festgelegten Schwellenwert überschreitet, wird ein Protokoll aufgezeichnet.
  • l log_queries_not_using_indexes: Abfragen, die keine Indizes verwenden, werden auch im Protokoll für langsame Abfragen aufgezeichnet (optional).
  • l log_output: Methode zur Protokollspeicherung. log_output='FILE' bedeutet, dass Protokolle in Dateien gespeichert werden. Der Standardwert ist 'FILE'. log_output='TABLE' bedeutet, dass die Protokolle in der Datenbank gespeichert werden.

Wie konfigurieren Sie also das Protokoll für langsame Abfragen? Standardmäßig ist der Wert von slow_query_log OFF, was bedeutet, dass das langsame Abfrageprotokoll deaktiviert ist. Sie können es aktivieren, indem Sie den Wert von slow_query_log wie folgt festlegen:

Variablen wie „%slow_query_log%“ anzeigen;

+----------------------+----------------------------------------------------------+
| Variablenname | Wert |
+----------------------+----------------------------------------------------------+
| slow_query_log | AUS |
| slow_query_log_datei | /home/WDPM/MysqlData/mysql/DB-Server-slow.log |
+----------------------+------------------------------------------------+

2 Zeilen im Satz (0,00 Sek.)

Die Verwendung von „set global slow_query_log=1“ zum Aktivieren des langsamen Abfrageprotokolls wirkt sich nur auf die aktuelle Datenbank aus und wird nach einem Neustart von MySQL ungültig. Wenn Sie möchten, dass es dauerhaft wirksam wird, müssen Sie die Konfigurationsdatei my.cnf ändern (dasselbe gilt für andere Systemvariablen).

Setzen Sie global slow_query_log=1;

So fügen Sie die Parameter slow_query_log und slow_query_log_file in my.cnf hinzu oder ändern sie, wie unten gezeigt:

slow_query_log = 1

slow_query_log_file = /tmp/mysql_slow.log

Der Parameter slow_query_log_file wird verwendet, um den Speicherpfad des langsamen Abfrageprotokolls anzugeben. Der Standardwert ist die Datei host_name-slow.log.

Variablen wie „slow_query_log_file“ anzeigen;

+---------------------+----------------------------------------------------------+

 | Variablenname | Wert |

 +---------------------+----------------------------------------------------------+

 | slow_query_log_datei | /home/WDPM/MysqlData/mysql/DB-Server-slow.log |

 +---------------------+----------------------------------------------------------+

 1 Zeile im Satz (0,00 Sek.)

Welche Art von SQL wird im Protokoll für langsame Abfragen aufgezeichnet, nachdem das Protokoll für langsame Abfragen aktiviert wurde? Dies wird durch den Parameter long_query_time gesteuert. Standardmäßig beträgt der Wert von long_query_time 10 Sekunden. Er kann mit dem Befehl oder im Parameter my.cnf geändert werden.

Die Situation, in der die Ausführungszeit genau gleich der long_query_time ist, wird nicht aufgezeichnet. Das heißt, im MySQL-Quellcode wird beurteilt, dass sie größer als die long_query_time ist, und nicht größer als oder gleich.

Ab MySQL 5.1 zeichnet long_query_time die Ausführungszeit von SQL-Anweisungen in Mikrosekunden auf, die zuvor nur in Sekunden aufgezeichnet wurde. Wenn in der Tabelle nur der ganzzahlige Teil aufgezeichnet wird, nicht der Mikrosekundenteil

Beachten Sie, dass in einigen Fällen bei Verwendung der lokalen Einstellungsmethode Folgendes passieren kann (siehe unten):

Variablen wie „long_query_time%“ anzeigen;
# Aktuelle long_query_time anzeigen +-----------------+-----------+

 | Variablenname | Wert |

 +-----------------+------------+

 | lange Abfragezeit | 10.000000 |

 +-----------------+------------+

setze global long_query_time=4;
# Stellen Sie die aktuelle long_query_time-Zeit ein und zeigen Sie Variablen wie „long_query_time“ an.
# Überprüfen Sie die long_query_time erneut

Wie oben gezeigt wird die Variable long_query_time geändert, aber der Wert der Abfragevariable long_query_time ist immer noch 10. Ist es möglich, dass sie nicht geändert wurde? Hinweis: Nachdem Sie die Zeit mit dem Befehl „set global long_query_time=4“ geändert haben, müssen Sie die Verbindung erneut herstellen oder eine neue Sitzung öffnen, um den geänderten Wert anzuzeigen. Verwenden Sie Show-Variablen wie „long_query_time“, um nur den Variablenwert der aktuellen Sitzung anzuzeigen. Sie können auch globale Variablen wie „long_query_time“ anzeigen, anstatt die Sitzung erneut zu verbinden.

Der Parameter log_output gibt an, wie das Protokoll langsamer Abfragen gespeichert wird:

l log_output='FILE' bedeutet, dass die Protokolle in einer Datei gespeichert werden. Der Standardwert ist ebenfalls 'FILE'.

l log_output='TABLE' bedeutet, dass die Protokolle in der Datenbank gespeichert werden, sodass die Protokollinformationen in die Tabelle mysql.slow_log geschrieben werden. Es unterstützt auch zwei Methoden zur Protokollspeicherung, die bei der Konfiguration durch Kommas getrennt werden können, z. B.: log_output='FILE,TABLE'.

Das Protokollieren in der dedizierten Protokolltabelle des Systems verbraucht mehr Systemressourcen als das Protokollieren in Dateien. Wenn Sie Protokolle für langsame Abfragen aktivieren und eine höhere Systemleistung erzielen müssen, empfiehlt es sich daher, zunächst in Dateien zu protokollieren.

Variablen wie „%log_output%“ anzeigen;

+---------------+-------+

| Variablenname | Wert |

+---------------+-------+

| log_ausgabe | DATEI |

+---------------+-------+

Setzen Sie global log_output='TABLE'.

Variablen wie „%log_output%“ anzeigen;

+---------------+-------+

| Variablenname | Wert |

+---------------+-------+

| log_output | TABELLE |

+---------------+-------+

wähle sleep(5);

+----------+

| schlafen(5) |

+----------+

| 0 |

+----------+

Nachdem wir sleep5 oben ausgeführt haben, wird dieser Vorgang im langsamen Abfrageprotokoll aufgezeichnet. Werfen wir einen Blick darauf:

mysql> wähle * aus mysql.slow_log;

 +---------------------+--------------------------+------------+-----------+-----------+---------------+----+----------------+-----------+---------------+

 | Startzeit | Benutzerhost | Abfragezeit | Sperrzeit | Gesendete Zeilen | Überprüfte Zeilen | Datenbank | Letzte Einfüge-ID | Einfüge-ID | Server-ID | SQL-Text | Thread-ID |

 +---------------------+--------------------------+------------+-----------+-----------+---------------+----+----------------+-----------+---------------+

 | 16.06.2016 17:37:53 | root[root]@localhost [] | 00:00:03 | 00:00:00 | 1 | 0 | | 0 | 0 | 1 | sleep(3) auswählen | 5 |

 | 16.06.2016 21:45:23 | root[root]@localhost [] | 00:00:05 | 00:00:00 | 1 | 0 | | 0 | 0 | 1 | sleep(5) auswählen | 2 |

 +---------------------+--------------------------+------------+-----------+-----------+---------------+----+----------------+-----------+---------------+

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Beispielcode für ein Mysql-SQL-Überwachungsskript für langsame Abfragen
  • So finden Sie langsame MySQL-Abfragen
  • Detaillierte Erklärung langsamer MySQL-Abfragen
  • MySQL-Methode und Beispiel für langsame Abfragen
  • Detaillierte Erklärung, warum die langsame Abfrageprotokollzeit von MySQL 5.7 8 Stunden hinter der Systemzeit liegt
  • Methode und Optimierungsprinzip für langsame MySQL-Abfragen
  • So optimieren Sie die MySQL-Leistung durch langsame MySQL-Abfragen
  • So aktivieren Sie die Protokollfunktion für langsame Abfragen in MySQL
  • Tutorial zur Konfiguration und Verwendung des MySQL-Protokolls für langsame Abfragen
  • So aktivieren Sie das langsame Abfrageprotokoll in MySQL
  • Beispiel einer langsamen MySQL-Abfrage

<<:  Implementierung der Docker Compose-Mehrcontainerbereitstellung

>>:  Das Prinzip und die Implementierung der bidirektionalen Bindung in Vue2.x

Artikel empfehlen

So implementieren Sie das Strategiemuster in Javascript

Inhaltsverzeichnis Überblick Code-Implementierung...

Einführung in das Layout des HTML-Seitenquellcodes_Powernode Java Academy

Einführung in das Layout des HTML-Seitenquellcode...

Zusammenfassung der wichtigsten Erkenntnisse des Vue-Entwicklungshandbuchs

Inhaltsverzeichnis Überblick 0. Grundlagen von Ja...

Lösung für den ES-Speicherüberlauf beim Starten von Docker

Fügen Sie die Datei jvm.options zur Elasticsearch...

MySQL-Code zur Implementierung der Sequenzfunktion

MySQL implementiert Sequenzfunktion 1. Erstellen ...

Detaillierte Erklärung des Docker Compose-Orchestrierungstools

Docker Compose Docker Compose ist ein Tool zum De...

So ändern Sie das Anfangskennwort eines Benutzers in mysql5.7

Wenn Benutzer MySQL-Datenbanken zum ersten Mal in...

6 Vererbungsmethoden von JS Advanced ES6

Inhaltsverzeichnis 1. Vererbung der Prototypkette...

React kapselt die globale Bullet-Box-Methode

In diesem Artikelbeispiel wird der spezifische Co...

Zusammenfassung der Erfahrungen beim Website-Erstellen

<br />Welche Grundsätze sollten beachtet wer...

Implementierung zum Zeichnen einer Audio-Wellenform mit wavesurfer.js

1. Sehen Sie sich die Renderings an Weiterleiten ...

Umfassende Analyse von Prototypen, Prototypobjekten und Prototypketten in js

Inhaltsverzeichnis Prototypen verstehen Prototypo...

Konfigurieren von MySQL und Squel Pro auf dem Mac

Als Reaktion auf die Popularität von nodejs haben...