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. Beschreibung des Konfigurationselements für langsame Protokollabfragen Öffnen Sie MySQL und zeigen Sie die relevante Konfiguration mit dem folgenden Befehl an: mysql> Variablen wie „%query%“ anzeigen; +------------------------------+--------------------------------------------------+ | Variablenname | Wert | +------------------------------+--------------------------------------------------+ | binlog_rows_query_log_events | AUS | | ft_query_expansion_limit | 20 | | have_query_cache | NEIN | | lange Abfragezeit | 10.000000 | | Abfrage-Zuweisungsblockgröße | 8192 | | Abfrage-Vorzuweisungsgröße | 8192 | | slow_query_log | AUS | | slow_query_log_file | /usr/local/mysql/data/seandeMacBook-Pro-slow.log | +------------------------------+--------------------------------------------------+ 8 Zeilen im Satz (0,00 Sek.) Die Konfigurationselemente, die Aufmerksamkeit erfordern, sind: 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 eine langsame Protokollabfrage 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 nach [mysqld] und fügen Sie darunter den folgenden Code hinzu. slow_query_log=EIN slow_query_log_file=/usr/local/mysql/var/localhost-slow.log lange_Abfragezeit=0 log-queries-not-using-indexes = 1 -- Starten Sie den MySQL-Dienst nach der Konfiguration neu 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; -- Wenn die Ausführung fehlschlägt, liegt dies möglicherweise daran, dass das Global nicht hinzugefügt wurde mysql> globales slow_query_log=ON festlegen; Ü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 | | have_query_cache | NEIN | | lange Abfragezeit | 10.000000 | | Abfrage-Zuweisungsblockgröße | 8192 | | Abfrage-Vorzuweisungsgröße | 8192 | | slow_query_log | EIN | | slow_query_log_file | /usr/local/mysql/data/seandeMacBook-Pro-slow.log | +------------------------------+--------------------------------------------------+ 8 Zeilen im Satz (0,01 Sek.) So zeigen Sie Datensätze langsamer Abfragen an Setzen Sie zunächst den Zeitschwellenwert des langsamen Abfrageprotokolls auf 0 mysql> globale long_query_time=0 festlegen; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.) Starten Sie MySQL neu, damit die Änderungen wirksam werden Vor der Konfiguration langsamer Abfragen wurden die Beispieldatendateien importiert. Offizielles MySQL-Datenbeispiel, dann mit der Abfrage beginnen. mysql> wähle * aus Stadt, wo Name = ‚Salala‘; +------+--------+----------+----------+------------+ | ID | Name | Ländercode | Bezirk | Einwohnerzahl | +------+--------+----------+----------+------------+ | 2818 | Salala | OMN | Zufar | 131813 | +------+--------+----------+----------+------------+ 1 Zeile im Satz (0,01 Sek.) Überprüfen Sie die obigen Befehlsvorgänge anhand der konfigurierten Protokolldatei für langsame Abfragen /usr/local/mysql/data/seandeMacBook-Pro-slow.log. # Zeit: 2019-08-20T09:17:49.791767Z # Benutzer@Host: root[root] @ localhost [] ID: 150 # Abfragezeit: 0,002549 Sperrzeit: 0,000144 Gesendete Zeilen: 1 Untersuchte Zeilen: 4079 SET-Zeitstempel=1566292669; Wählen Sie * aus der Stadt, in der Name = „Salala“ ist; 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. 1. Zeigen Sie die ursprüngliche Ausführungsstruktur der SQL-Anweisung an: mysql> erklären Sie die Auswahl * aus der Stadt, in der Name = "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: 4188 gefiltert: 10.00 Extra: Verwenden von „where“ 1 Zeile im Satz, 1 Warnung (0,00 Sek.) Es ist ersichtlich, dass die SQL-Anweisung einen vollständigen Festplattenscan durchführt. Wir können Indizes verwenden, um es einfach zu optimieren. 2. Erstellen Sie einen Index mysql> erstelle Index idx_cityName für Stadt(`Name`); Abfrage OK, 0 Zeilen betroffen (0,02 Sek.) Datensätze: 0 Duplikate: 0 Warnungen: 0 3. Verwenden Sie „erklären“ zur Analyse mysql> erklären Sie die Auswahl * aus der Stadt, in der Name = "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: 35 Verweis: const Reihen: 1 gefiltert: 100,00 Extra: NULL 1 Zeile im Satz, 1 Warnung (0,01 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. 1.mysqldumpslow Oben finden Sie eine ausführliche Erläuterung der langsamen MySQL-Protokollabfrage. Weitere Informationen zur langsamen MySQL-Protokollabfrage finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Allgemeine Front-End-JavaScript-Methodenkapselung
>>: Verwenden von NTP zur Zeitsynchronisierung in Ubuntu
In den meisten Fällen unterstützt MySQL Chinesisc...
Ubuntu 18.04, andere Versionen von Ubuntu Frage: ...
Heute habe ich mich mit der Migration eines Proje...
Dieser Artikel veranschaulicht anhand von Beispie...
Installieren Stellen Sie sicher, dass Ihr Benutze...
Inhaltsverzeichnis 1. Nachfrage 2. Umsetzung 3. E...
1. Was ist Docker? (1) Docker ist ein Open-Source...
Vorwort Heutzutage wird in Projekten häufig die A...
In vertikaler Richtung können Sie die Zellenausri...
<br />Der Inhalt wurde aus dem Internet repr...
Virtuelle Hosts verwenden spezielle Software- und...
Implementierungsmethode für die MySQL5.7-Master-S...
In diesem Artikelbeispiel wird der spezifische Co...
Seit kurzem ist https auch auf dem Handy möglich....
1. Einleitung Manchmal müssen Sie eine Servicesch...