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:
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:
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:
|
<<: Implementierung der Docker Compose-Mehrcontainerbereitstellung
>>: Das Prinzip und die Implementierung der bidirektionalen Bindung in Vue2.x
Inhaltsverzeichnis Überblick Code-Implementierung...
Einführung in das Layout des HTML-Seitenquellcode...
Im vorherigen Artikel haben wir die Netzwerkerken...
Inhaltsverzeichnis Überblick 0. Grundlagen von Ja...
Fügen Sie die Datei jvm.options zur Elasticsearch...
Inhaltsverzeichnis 1. Docker installieren 2. Inst...
MySQL implementiert Sequenzfunktion 1. Erstellen ...
Docker Compose Docker Compose ist ein Tool zum De...
Wenn Benutzer MySQL-Datenbanken zum ersten Mal in...
Inhaltsverzeichnis 1. Vererbung der Prototypkette...
In diesem Artikelbeispiel wird der spezifische Co...
<br />Welche Grundsätze sollten beachtet wer...
1. Sehen Sie sich die Renderings an Weiterleiten ...
Inhaltsverzeichnis Prototypen verstehen Prototypo...
Als Reaktion auf die Popularität von nodejs haben...