Langsame Protokollabfragefunktion Die Hauptfunktion der langsamen Protokollabfrage besteht darin, die Abfrageanweisungen in SQL-Anweisungen aufzuzeichnen, die den festgelegten Zeitschwellenwert überschreiten. Beispielsweise setzen wir für eine SQL-Abfrageanweisung den Schwellenwert auf 1 s. Wenn die Ausführungszeit dieser Abfrageanweisung 1 s überschreitet, wird sie in das Konfigurationsprotokoll für langsame Abfragen geschrieben. Langsame Abfragen dienen uns hauptsächlich dazu, die SQL-Anweisung zu optimieren. Beschreibung des Konfigurationselements für langsame Abfragen Melden Sie sich beim MySQL-Dienst an und verwenden Sie den folgenden Befehl mysql> Variablen wie „%query%“ anzeigen; +------------------------------+-----------------------------------------+ | Variablenname | Wert | +------------------------------+-----------------------------------------+ | binlog_rows_query_log_events | AUS | | ft_query_expansion_limit | 20 | | habe_Abfragecache | JA | | lange Abfragezeit | 10.000000 | | Abfrage-Zuweisungsblockgröße | 8192 | | Abfrage-Cache-Limit | 1048576 | | Abfrage-Cache_Mindestressource | 4096 | | Abfrage-Cache-Größe | 33554432 | | Abfrage-Cache-Typ | AUS | | query_cache_wlock_invalidate | AUS | | Abfrage-Vorzuweisungsgröße | 8192 | | slow_query_log | AUS | | slow_query_log_datei | /usr/local/mysql/var/localhost-slow.log | +------------------------------+-----------------------------------------+ 13 Zeilen im Satz (0,01 Sek.) Hier müssen wir uns nur auf drei Konfigurationselemente konzentrieren. 1.langsames_Abfrageprotokoll Dieses Konfigurationselement bestimmt, ob die langsame Protokollabfragefunktion aktiviert werden soll. Der Konfigurationswert ist ON oder OFF. 2. langsame Abfrageprotokolldatei Dieses Konfigurationselement ist eine Aufzeichnungsdatei für langsame Protokollabfragen und muss manuell erstellt werden. 3.lange_Abfragezeit Dieses Konfigurationselement legt den Zeitschwellenwert für langsame Protokollabfragen fest. Wenn dieser Schwellenwert überschritten wird, wird das langsame Protokoll aufgezeichnet. Der Konfigurationswert ist 0 (alle SQL-Anweisungen werden aufgezeichnet) oder > 0 (bestimmter Schwellenwert). Dieses Konfigurationselement ist in Sekunden angegeben und kann auf Dezimalzahlen eingestellt werden. 4. Log-Abfragen, die keine Indizes verwenden Dieses Konfigurationselement wird zum Aufzeichnen von SQL-Anweisungen verwendet, die keine Indizes verwenden. So konfigurieren Sie langsame Abfragen Es gibt zwei Möglichkeiten, die langsame Abfragefunktion zu konfigurieren. Eine besteht darin, die MySQL-Konfigurationsdatei zu verwenden, und die andere darin, den MySQL-Befehl zu verwenden. Es wird empfohlen, die Konfigurationsdatei zu verwenden, da beim Konfigurieren des Befehls manchmal festgestellt wird, dass das Konfigurationselement erfolgreich ist, wenn der Set-Befehl verwendet wird, die Abfrage jedoch immer noch nicht festgelegt ist. 1. Konfigurationsdateikonfiguration // Suchen Sie [mysqld] und fügen Sie darunter den folgenden Code ein. slow_query_log=EIN slow_query_log_file=/usr/local/mysql/var/localhost-slow.log lange_Abfragezeit=0 log-queries-not-using-indexes = 1 // Nach der Konfiguration den MySQL-Dienst neu starten 2. Verwenden Sie die Befehlskonfiguration // Hier benötigen wir nur ein Konfigurationselement und andere Konfigurationselemente werden auf diese Weise konfiguriertmysql> set slow_query_log=ON; Überprüfen Sie nach der Konfiguration, ob das MySQL-Protokoll für langsame Abfragen erfolgreich konfiguriert wurde. mysql> Variablen wie „%query%“ anzeigen; +------------------------------+-----------------------------------------+ | Variablenname | Wert | +------------------------------+-----------------------------------------+ | binlog_rows_query_log_events | AUS | | ft_query_expansion_limit | 20 | | habe_Abfragecache | JA | | lange Abfragezeit | 0,000000 | | Abfrage-Zuweisungsblockgröße | 8192 | | Abfrage-Cache-Limit | 1048576 | | Abfrage-Cache_Mindestressource | 4096 | | Abfrage-Cache-Größe | 33554432 | | Abfrage-Cache-Typ | AUS | | query_cache_wlock_invalidate | AUS | | Abfrage-Vorzuweisungsgröße | 8192 | | slow_query_log | EIN | | slow_query_log_datei | /usr/local/mysql/var/localhost-slow.log | +------------------------------+-----------------------------------------+ 13 Zeilen im Satz (0,01 Sek.) So zeigen Sie langsame Protokolldatensätze an Bevor wir die langsame Abfrage konfiguriert haben, haben wir die Beispieldatendatei importiert. Daher führen wir hier keine separate Demonstration durch. Beispiel einer offiziellen MySQL-Datenbank. Als Nächstes beginnen wir mit der Durchführung von Abfragevorgängen. mysql> wähle * aus Stadt, wobei Stadt = "Salala" ist; +---------+--------+------------+---------------------+ | Stadt-ID | Stadt | Länder-ID | letzte_Aktualisierung | +---------+--------+------------+---------------------+ | 444 | Salala | 71 | 15.02.2006 04:45:25 | +---------+--------+------------+---------------------+ 1 Zeile im Satz (0,01 Sek.) An diesem Punkt haben wir die Protokolldatei für langsame Abfragen /usr/local/mysql/var/localhost-slow.log konfiguriert und festgestellt, dass die Datei die oben genannten Befehlsvorgänge aufzeichnet. # Zeit: 2019-01-17T08:12:27.184998Z # Benutzer@Host: root[root] @ localhost [] ID: 4 # Abfragezeit: 0,002773 Sperrzeit: 0,001208 Gesendete Zeilen: 1 Untersuchte Zeilen: 600 SET-Zeitstempel=1547712747; Wählen Sie * aus der Stadt, in der Stadt = „Salala“; Inhaltsbeschreibung der Konfiguration der Beschwerdedatei 1.Zeit Der Zeitpunkt der Protokollaufzeichnung 2.Benutzer@Host MySQL-Anmeldebenutzer und Anmeldehostadresse 3. Query_time-Zeile Die erste Zeit ist die Abfragezeit, die zweite die Tabellensperrzeit, die dritte die Anzahl der zurückgegebenen Zeilen und die vierte die Anzahl der gescannten Zeilen. 4.SET-Zeitstempel Dies ist die Zeit der MySQL-Abfrage 5.SQL-Anweisung Diese Zeile ist sehr offensichtlich, sie stellt die SQL-Anweisung dar, die wir ausgeführt haben Zusammenfassen Da wir long_query_time=0 konfigurieren, werden alle SQL-Anweisungen aufgezeichnet. Hier nehmen wir einfach an, nehmen wir einfach an. Wir haben long_query_time = 5 festgelegt, aber im dritten Punkt oben ist Query_time größer als 5. Wenn es im tatsächlichen Projekt nicht im normalen Bereich liegt, muss es optimiert werden. Natürlich gibt es viele Möglichkeiten, es zu optimieren. Lassen Sie uns eine einfache Indexmethode verwenden, um es zu optimieren. Optimieren von SQL-Anweisungen 1. Überprüfen Sie zunächst die ursprüngliche Ausführungsstruktur der SQL-Anweisung mysql> erklären Sie die Auswahl * aus Stadt, wo Stadt = "Salala"\G; *************************** 1. Reihe *************************** ID: 1 select_type: EINFACH Tabelle: Stadt Partitionen: NULL Typ: ALLE mögliche Schlüssel: NULL Schlüssel: NULL key_len: NULL Ref: NULL Reihen: 600 gefiltert: 10.00 Extra: Verwenden von „where“ 1 Zeile im Satz, 1 Warnung (0,00 Sek.) mysql> erstelle Index idx_cityName für Stadt(`Stadt`); Abfrage OK, 0 Zeilen betroffen (0,03 Sek.) Datensätze: 0 Duplikate: 0 Warnungen: 0 Es ist ersichtlich, dass die SQL-Anweisung einen vollständigen Scan durchführt. Wir verwenden den Index einfach zur Optimierung. 2. Erstellen Sie einen Index mysql> erstelle Index idx_cityName für Stadt(`Stadt`); Abfrage OK, 0 Zeilen betroffen (0,03 Sek.) Datensätze: 0 Duplikate: 0 Warnungen: 0 3. Nochmals analysieren mit Explain mysql> erklären Sie die Auswahl * aus Stadt, wo Stadt = "Salala"\G; *************************** 1. Reihe *************************** ID: 1 select_type: EINFACH Tabelle: Stadt Partitionen: NULL Typ: ref mögliche Schlüssel: idx_cityName Schlüssel: idx_cityName Schlüssellänge: 152 Verweis: const Reihen: 1 gefiltert: 100,00 Extra: NULL 1 Zeile im Satz, 1 Warnung (0,00 Sek.) Durch die Erstellung eines Indexes stellten wir fest, dass zu diesem Zeitpunkt nur eine Zeile gescannt wurde und der Index-Scan verwendet wurde, was die Effizienz einer MySQL-Abfrage erheblich verbesserte. Zusammenfassung der Verwendung langsamer MySQL-Abfragen Bei der normalen Entwicklung sind langsame Abfragen eine sehr nützliche Möglichkeit zur Optimierung von MySQL. Es zeichnet einige unserer SQL-Anweisungen mit langer Abfragezeit auf und wir analysieren sie, um die SQL-Abfrageanweisungen zu optimieren. Nachdem jedoch die langsame Protokollabfrage aktiviert wurde, werden die relevanten Datensätze für die SQL-Abfrage über die Festplatten-E/A in die Festplattendatei geschrieben, was den Lese- und Schreibvorgang der Festplatten-E/A erhöht. Daher verwenden wir diese Funktion in Entwicklungs- und Testumgebungen, nicht in Produktionsumgebungen. Tool für langsame Protokollabfragen Je neuer die Slow-Log-Abfragedatei ist, desto mehr Inhalt enthält sie. Je stärker der Analysedruck ist, desto mehr Tools müssen wir einsetzen, um eine schnelle Analyse zu erreichen. Ich bin mit diesen Tools noch nicht ganz vertraut. Ich werde später einen separaten Artikel schreiben, um diese Art von Tools vorzustellen. Hier werde ich nur die Toolnamen auflisten. 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:
|
<<: Detaillierte Erklärung der schmerzlosen Token-Aktualisierungsmethode von Uniapp
>>: So konfigurieren Sie inländische Quellen in CentOS8 yum/dnf
Automatische Aktualisierung der Webseite: Fügen Si...
Code kopieren Der Code lautet wie folgt: <!DOC...
Inhaltsverzeichnis Überblick 1. Erfassung und Ver...
Ergebnisse erzielenImplementierungscode html <...
Inhaltsverzeichnis Vorwort Welche Situationen kön...
Es gibt zu viele Artikel über Webstandards zur We...
Inhaltsverzeichnis Verwendete Pygame-Funktionen E...
Wenn es um Datenbanken geht, ist eine der am häuf...
Grundlegende Vorgänge wie die Verbindung zur Date...
Vorwort Es dauerte zwei Tage, um ein Puzzlespiel ...
Inhaltsverzeichnis Lebenszyklusfunktionen Allgeme...
Es gibt zwei Tabellen, und die Datensätze in Tabe...
Wenn Sie zur Implementierung eines Kontrollkästch...
Egal wie großartig Ihre persönliche Website ist, ...
Die Standard-SSH-Portnummer von Linux-Servern ist...