Zusammenfassung der langsamen MySQL-Abfragevorgänge

Zusammenfassung der langsamen MySQL-Abfragevorgänge

Erklärung langsamer MySQL-Abfragen

Das MySQL Slow Query Log ist ein Protokolltyp, der von MySQL bereitgestellt wird. Es wird verwendet, um Anweisungen in MySQL aufzuzeichnen, deren Antwortzeit den Schwellenwert überschreitet. Insbesondere werden SQL-Anweisungen, deren Ausführungszeit den Wert „long_query_time“ überschreitet, im Slow Query Log aufgezeichnet. Der Standardwert von long_query_time ist 10, was bedeutet, dass die Anweisung länger als 10 Sekunden ausgeführt wird. Standardmäßig startet die MySQL-Datenbank das langsame Abfrageprotokoll nicht, und wir müssen diesen Parameter manuell festlegen. Wenn es für die Optimierung nicht erforderlich ist, wird es natürlich im Allgemeinen nicht empfohlen, diesen Parameter zu starten, da das Einschalten des langsamen Abfrageprotokolls mehr oder weniger gewisse Auswirkungen auf die Leistung hat. Das Slow Query Log unterstützt das Schreiben von Protokolldatensätzen in Dateien und Datenbanktabellen. Das Slow Query Log wird verwendet, um einige langsame Abfrageanweisungen aufzuzeichnen, was Administratoren bei der Analyse des Problems helfen kann. Das Protokoll ist standardmäßig nicht aktiviert und muss manuell aktiviert werden, indem eine Reihe von Parametern in der Konfigurationsdatei hinzugefügt werden.

Gründe für die Aktivierung langsamer MySQL-Abfragen

Datenbanken sind Orte, an denen leicht Engpässe auftreten können. NoSQL wird derzeit so heiß diskutiert, und ich schätze, jeder ist von der Datenbank frustriert. Die Anweisungen, die den größten Einfluss auf die MySQL-Geschwindigkeit haben, sind solche, deren Abfragen sehr langsam sind. Diese langsamen Anweisungen sind möglicherweise falsch geschrieben oder es handelt sich um gemeinsame Abfragen mehrerer Tabellen bei großen Datenmengen usw. Daher müssen wir diese Anweisungen finden, die Gründe analysieren und sie optimieren. Dies ist auch der Grund für die Veröffentlichung dieses Blogbeitrags

So aktivieren Sie die langsame MySQL-Abfrage

1) Methode 1: Loggen Sie sich in das MySQL-Datenbankterminal ein und öffnen Sie

mysql> zeige Variablen wie "%long%"; <SPAN style="COLOR: #ff00ff"> // Überprüfe die standardmäßige langsame Abfragezeit von 10 Sekunden</SPAN> 
+-----------------+------------+  
| Variablenname | Wert |  
+-----------------+------------+  
| lange Abfragezeit | 10.000000 |  
+-----------------+------------+  
1 Zeile im Satz (0,00 Sek.)  
  
mysql> set global long_query_time=1; <SPAN style="COLOR: #ff00ff">//Auf 1 Sekunde einstellen, global hinzufügen, und es wird beim nächsten Aufrufen von mysql wirksam</SPAN>  
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)  
 
mysql> zeige Variablen wie "%slow%"; <SPAN style="COLOR: #ff00ff"> // Überprüfen Sie, ob langsame Abfrage aktiviert ist</SPAN> 
+---------------------+---------------------------------+  
| Variablenname | Wert |  
+---------------------+---------------------------------+  
| log_slow_queries | AUS |  
| langsame Startzeit | 2 |  
| slow_query_log | AUS |  
| slow_query_log_datei | /usr/local/mysql/mysql-slow.log |  
+---------------------+---------------------------------+  
4 Zeilen im Satz (0,00 Sek.)  
  
mysql> set slow_query_log='ON'; <SPAN style="COLOR: #ff00ff"> //Global hinzufügen, sonst wird ein Fehler gemeldet</SPAN> 
FEHLER 1229 (HY000): Die Variable „slow_query_log“ ist eine GLOBALE Variable und sollte mit SET GLOBAL gesetzt werden. 
mysql> set global slow_query_log='ON'; <SPAN style="COLOR: #ff00ff">//Wenn Sie diesen Parameter auf ON setzen, werden langsame Abfragen aktiviert, die SQL-Anweisungen erfassen können, deren Ausführungszeit einen bestimmten Wert überschreitet. </SPAN> 
Abfrage OK, 0 Zeilen betroffen (0,28 Sek.)  
  
mysql> zeige Variablen wie "%slow%"; <SPAN style="COLOR: #ff00ff">//Überprüfen Sie, ob es aktiviert ist</SPAN> 
+---------------------+---------------------------------+  
| Variablenname | Wert |  
+---------------------+---------------------------------+  
| log_slow_queries | EIN |  
| langsame Startzeit | 2 |  
| slow_query_log | EIN |  
| slow_query_log_datei | /usr/local/mysql/mysql-slow.log |  
+---------------------+---------------------------------+  
4 Zeilen im Satz (0,00 Sek.)

Methode 2: Ändern Sie die MySQL-Konfigurationsdatei my.cnf

[root@www ~]# vim /etc/mysql.cnf
Fügen Sie den folgenden Inhalt zur Konfiguration des Bereichs [mysqld] hinzu
......

slow_query_log = 1 //Öffnen Sie das langsame Abfrageprotokoll. Sie können 1 auch auf ON ändern.
long_query_time = 1 // MySQL-Abfragezeit für langsame Abfragen. Geben Sie an, wie viele Sekunden es dauert, bis die Abfrage als langsam gilt. Es wird empfohlen, Ausführungsanweisungen, die länger als 1 Sekunde dauern, so einzustellen, dass sie im Protokoll für langsame Abfragen aufgezeichnet werden.
slow_query_log_file= /var/lib/mysql/mysql-slow.log //Pfad des langsamen Abfrageprotokolls. Hier kann slow_query_log_file in log-slow-queries geändert werden.
// Hauptsächlich die obigen drei Inhaltszeilen, Sie können auch die folgenden Zeilen zur detaillierten Konfiguration hinzufügen
long-queries- not-using-indexes //Abfrageanweisungen aufzeichnen, die keine Indizes verwenden
min_examined_row_limit = 1000 //Langsame Abfrage, da bis zu 1000 Mal nach Datensätzen gesucht wird
log-slow-admin-statements //Zeichnet langsame Abfragen auf, die durch ALTER TABLE und andere Anweisungen verursacht werden
log-slow-slave-statements //Zeichnet langsame Abfragen auf, die vom Server generiert werden

Analyse-Tools

Das Analysetool analysiert tatsächlich die in mysql-slow.log aufgezeichneten Daten und zeigt sie an (tatsächlich können Sie auch ein Shell-Skript schreiben, um die erforderlichen Informationen zu extrahieren).

[root@www ~]# cat mysql-slow.log //Befehle anzeigen

/usr/local/mysql/libexec/mysqld, Version: 5.1.26-rc-log (Quelldistribution). gestartet mit:  
TCP-Port: 3306 Unix-Socket: /tmp/mysql.sock  
Zeit-ID-Befehlsargument  
# Zeit: 100814 13:28:30  
# Benutzer@Host: root[root] @ localhost []  
# Abfragezeit: 10,096500 Sperrzeit: 0,045791 Gesendete Zeilen: 1 Untersuchte Zeilen: 2374192  
SET-Zeitstempel=1281763710;  
Wählen Sie die Anzahl (eindeutiger Anzeigencode) als x aus dem Anzeigenbesuchsverlauf, wobei der Anzeigencode in (Wählen Sie den Anzeigencode aus der Anzeigenliste, wobei die Medien-ID = 15 ist);  
# Zeit: 100814 13:37:02  
# Benutzer@Host: root[root] @ localhost []  
# Abfragezeit: 10,394134 Sperrzeit: 0,000091 Gesendete Zeilen: 1 Untersuchte Zeilen: 2374192  
SET-Zeitstempel=1281764222;  
Wählen Sie die Anzahl (eindeutiger Anzeigencode) als x aus dem Anzeigenbesuchsverlauf, wobei der Anzeigencode in (Wählen Sie den Anzeigencode aus der Anzeigenliste, wobei die Medien-ID = 15 ist);  
# Zeit: 100814 13:37:16  
# Benutzer@Host: root[root] @ localhost []  
# Abfragezeit: 4,608920 Sperrzeit: 0,000078 Gesendete Zeilen: 1 Untersuchte Zeilen: 1260544  
SET-Zeitstempel=1281764236;  
Wählen Sie count(*) als cou aus ad_visit_history, wobei ad_code in (wählen Sie ad_code aus ad_list, wobei id=41) sortieren nach ID absteigend;

Wie Sie sehen, wird lediglich der Ausführungsstatus von SQL-Anweisungen aufgezeichnet, einschließlich Ausführungszeit, Sperrzeit usw. Ob Sie also Analysetools verwenden, hängt von Ihrer persönlichen Situation ab. Es gibt viele Analysetools. Hier werde ich nur über die Verwendung von mysqldumpslow sprechen, einem Tool zur Analyse langsamer Abfragen, das mit MySQL geliefert wird.

[root@www ~]# mysqldumpslow -h

Option h erfordert ein Argument  
FEHLER: falsche Option 
  
Verwendung: mysqldumpslow [ OPTS... ] [ LOGS... ]  
  
Analysieren und fassen Sie das MySQL-Protokoll für langsame Abfragen zusammen. Optionen sind  
  
 --verbose ausführlich  
 --debug debug  
 --help schreibt diesen Text in die Standardausgabe  
  
 -v ausführlich  
 -d debug //Fehlerprüfung -s ORDER, wonach sortiert werden soll (t, at, l, al, r, ar usw.), „at“ ist Standard //Sortiermethode: Abfragezeiten, Zeit, Sperrzeit und Anzahl der zurückgegebenen Datensätze -r kehrt die Sortierreihenfolge um (größte zuletzt statt zuerst) //Umgekehrte Sortierung -t NUM zeigt nur die obersten n Abfragen //Zeigt die obersten N Abfragen -a abstrahiert nicht alle Zahlen zu N und Zeichenfolgen zu „S“ 
 -n NUM abstrakte Zahlen mit mindestens n Ziffern in den Namen //Abstrakte Zahlen, mindestens n Ziffern im Namen -g PATTERN grep: nur Anweisungen berücksichtigen, die diesen String enthalten //Konfigurationsmodus -h HOSTNAME Hostname des Datenbankservers für *-slow.log Dateiname (kann ein Platzhalter sein), //MySQL-Computername oder IP 
 Der Standardwert ist '*', d. h. alle 
 -i NAME Name der Serverinstanz (bei Verwendung des Startskripts mysql.server) 
 -l Sperrzeit nicht von Gesamtzeit abziehen //Sperrzeit nicht von Gesamtzeit abziehen

Beispiele:

[root@BlackGhost bin]# ./mysqldumpslow -sr -t 20 /var/lib/mysql/mysql-slow.log

[root@BlackGhost bin]# ./mysqldumpslow -sr -t 20 -g 'Anzahl' /var/lib/mysql/mysql-slow.log

Die obige Zusammenfassung der langsamen MySQL-Abfragevorgänge ist alles, was ich mit Ihnen teilen möchte. Ich hoffe, sie kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung zum Aktivieren des langsamen Abfrageprotokolls in der MySQL-Datenbank
  • Langsame MySQL-Abfrage: Langsame Abfrage aktivieren
  • So aktivieren Sie die Protokollierung langsamer Abfragen in MySQL
  • Anwendungsbeispiele für mysqldumpslow (langsame Abfragen)
  • So löschen Sie die langsame Abfragedatei in MySQL
  • Eine langsame MySQL-Abfrage verursachte einen Fehler
  • Detaillierte Erklärung zum Aktivieren langsamer Abfragen in MySQL 5.7.10

<<:  JavaScript ermittelt, ob der Browser IE ist

>>:  Praktischer grundlegender Beispielcode für den Linux-Befehl sed

Artikel empfehlen

CSS3 realisiert den Effekt der kontinuierlichen Dreiecksvergrößerung

1. CSS3-Dreieck vergrößert weiterhin Spezialeffek...

Problem beim Wechseln der Registerkarten für die Handschrift von React

Übergeordnete Datei importiere React, { useState ...

So installieren Sie Nginx in CentOS7 und konfigurieren den automatischen Start

1. Laden Sie das Installationspaket von der offiz...

Eine kurze Beschreibung der Beziehung zwischen k8s und Docker

In letzter Zeit verwendet das Projekt Kubernetes ...

WeChat-Applet implementiert SMS-Login in Aktion

Inhaltsverzeichnis 1. Vorschau der Schnittstellen...

Beispiel für eine einfache Operation einer MySQL-Abfrageanweisung

Dieser Artikel veranschaulicht anhand von Beispie...

Lösung für das Problem, dass MySql immer das mySqlInstallerConsole-Fenster öffnet

MySql öffnet regelmäßig ein MySQLInstallerConsole...

js kehrt zur vorherigen Seite zurück und aktualisiert den Code

1. Javascript kehrt zur vorherigen Seite zurück hi...

So verwenden Sie Mixins in Vue

Inhaltsverzeichnis Vorwort Anwendung Zusammenfass...

So stellen Sie Solidity-Smart-Contracts mit ethers.js bereit

Wenn Sie DApps auf Ethereum entwickelt haben, hab...

Nginx implementiert ein Codebeispiel für die https-Websitekonfiguration

https-Basisport 443. Er wird für etwas verwendet,...

Ausführliche Erklärung der Modi und Umgebungsvariablen in Vue CLI

Vorwort Bei der Entwicklung tatsächlicher Projekt...