Methode: 1. Wenn die langsame Abfrage nicht aktiviert ist, verwenden Sie „set global slow_query_log='ON';“ um die langsame Abfrage zu aktivieren. 2. Verwenden Sie „set global slow_query_log_file=path“, um den Speicherort für die langsame Abfrage festzulegen. Verwenden Sie „subl path“. Fragen Sie einfach die Datei ab.
Die Betriebsumgebung dieses Tutorials: Centos 7-System, MySQL8.0.22-Version, Dell G3-Computer.
Wie man langsame SQL-Anweisungen in MySQL abfragt
Suche nach langsamen SQL-Anweisungen in MySQL auf
Das langsame Abfrageprotokoll slow_query_log wird verwendet, um langsame SQL-Anweisungen aufzuzeichnen, die langsamer sind SQL kann optimiert werden.
Melden Sie sich bei der MySQL-Datenbank an:
1. Überprüfen Sie, ob die aktuelle langsame Abfrage aktiviert ist,
und die durch die langsame Abfrage angegebene Zeit
show variables like 'slow_query_log';
show variableslike 'long_query_time';
Nach dem Login kopieren
Wenn nach Ihrer Abfrage das Ergebnis AUS ist, müssen Sie es über die entsprechenden Einstellungen auf EIN ändern:
set global slow_query_log='ON';
Nach dem Login kopieren
Setzen Sie die langsame Abfrageverfolgungszeit auf 1 Sekunde:
Nachdem Sie dies festgelegt haben , die Welt ist nicht Es wird sofort 1s und wird nach dem Neustart der Datenbank wirksam:
2 Legen Sie den Speicherort für die Protokolldatei für langsame Abfragen fest:
set global slow_query_log_file='/var/lib/mysql/test_1116.log';
Nach dem Login kopieren
3 konfigurierte Dateien:
sudo subl /var/lib/mysql/test_1116.log
Nach dem Login kopieren
Wissen erweitern:
So beheben Sie langsame Abfrageprobleme in MySQL-Datenbanken
Ich bin in letzter Zeit mehrmals auf das Problem der langsamen Datenbankantwort gestoßen. Ich habe den Verarbeitungsfluss und die Analyse geklärt Ideen und führte das Drehbuch aus. Ich hoffe, das hilft anderen.
MySQL langsame Abfrageleistung
Es ist offensichtlich, dass die meisten Anwendungsfunktionen verlangsamt sind, aber es ist nicht völlig funktionsunfähig. Nach langem Warten erfolgt immer noch eine Antwort. Aber das ganze System sieht sehr festgefahren aus.
Fragen Sie die Anzahl der langsamen Abfragen ab.
Im Allgemeinen ist es bei einem normal funktionierenden MySQL-Server normal, dass die Anzahl der langsamen Abfragen pro Minute im einstelligen Bereich liegt Auf 100 kann es zu Problemen mit dem System kommen, es lässt sich aber noch kaum nutzen. Die Zahl der langsamen Abfragen, die in diesen wenigen Fällen fehlgeschlagen sind, liegt bei über 1.000.
Die Anzahl langsamer Abfragen wird in der Tabelle slow_log in der MySQL-Bibliothek gespeichert.
SELECT * FROM `slow_log` where start_time > '2019/05/19 00:00:00';
Nach dem Login kopieren
Auf diese Weise können Sie die langsamen Abfragen des Tages herausfinden.
Überprüfen Sie den Status der aktuellen Abfrage.
Jeder sollte üblicherweise Show Processlist verwenden, um die aktuell im System ausgeführten Abfragen zu überprüfen. Tatsächlich werden diese Daten auch in der Processlist-Tabelle in der Information_schema-Bibliothek gespeichert, wenn Sie möchten Führen Sie eine bedingte Abfrage durch und fragen Sie diese direkt ab. Es ist bequemer, eine Tabelle zu erstellen.
Zum Beispiel alle aktuellen Prozesse anzeigen
select * from information_schema.processlist
Nach dem Login kopieren
Sehen Sie sich die aktuell laufenden Abfragen an und sortieren Sie sie in umgekehrter Reihenfolge nach der Ausführungszeit
select * from information_schema.processlist where info is not null order by time desc
Nach dem Login kopieren
Eine normalerweise laufende Datenbank, da eine Abfrage sehr schnell ausgeführt wird, und die von uns erfassten Informationen ist nicht Die Anzahl der Nullabfragen wird sehr gering sein. Eine Bibliothek mit einer hohen Auslastung wie unserer kann in der Regel nur wenige Medien finden. Wenn Dutzende Abfragen mit nicht leeren Informationen gleichzeitig gefunden werden, kann ebenfalls davon ausgegangen werden, dass ein Problem mit dem System vorliegt.
Systemprobleme und Positionierung
Nachdem wir bemerkten, dass das System langsamer wurde, überprüften wir es sofort mithilfe langsamer Abfragen und überprüften die Prozessliste. Wir stellten fest, dass die Anzahl langsamer Abfragen pro Minute auf über 1.000 anstieg, und zwar eine große Anzahl Während der Ausführung häuften sich Abfragen.
Da die oberste Priorität darin besteht, den normalen Betrieb des Systems so schnell wie möglich wiederherzustellen, besteht die direkteste Möglichkeit, dies zu beeinflussen, darin, zu überprüfen, wie viele Abfragen in den Abfrageergebnissen der Prozessliste sich im Sperrzustand befinden oder für eine Weile ausgeführt wurden lange Zeit und beenden Sie diese Prozesse mit dem Befehl kill. Durch das kontinuierliche Beenden dieser Prozesse, die zu einer Überlastung des Systems führen können, kann das System schließlich vorübergehend in den Normalzustand zurückversetzt werden. Dies ist natürlich nur eine Notlösung.
Darüber hinaus ist es natürlich am wichtigsten zu analysieren, welche Abfragen zu Systemüberlastungen führen. Zur Analyse verwenden wir immer noch langsame Abfragen.
Es gibt mehrere wichtige Indikatoren in den Abfrageergebnissen der langsamen Abfragetabelle:
start_time Startzeit Dieser Parameter sollte verwendet werden, um die Zeit des Systemproblems abzugleichen, um herauszufinden, welche Abfrage der Schuldige ist.
query_time Abfragezeit
rows_sent und rows_examined sind die Anzahl der gesendeten Ergebnisse und die Anzahl der von der Abfrage gescannten Zeilen. Diese beiden Werte sind besonders wichtig, insbesondere rows_examined. Im Grunde sagt es uns, welche Abfrage die „große“ Abfrage ist, auf die wir achten müssen.
Im tatsächlichen Betrieb analysieren wir auch die Abfragen mit einer großen Anzahl von Zeilen nacheinander, fügen Indizes hinzu und ändern das Schreiben von Abfrageanweisungen, um das Problem vollständig zu lösen.
Verarbeitungsergebnisse und Reflexion
Nach der Überprüfung und Korrektur aller langsamen Abfragen liegt die aktuelle Anzahl langsamer MySQL-Abfragen pro Minute zwischen 1 und 2, und die CPU-Auslastung ist ebenfalls sehr gering. Das Problem ist grundsätzlich gelöst.
Denken Sie über die Gründe für das Problem nach, es gibt ein paar Dinge, auf die Sie achten sollten:
1. Datenbankprobleme verursachen oft keine Probleme, wenn sie online gehen, aber es kommt zu einem Anhäufungsprozess von fehlerhaften Abfrageanweisungen Die Systemlast wird sich allmählich erhöhen, der letzte Tropfen, der das Fass zum Überlaufen bringt, scheint oft unerklärlich zu sein , die Datenmenge nimmt zu Die Überwachung langsamer Abfragen muss ebenfalls im Zabbix-Überwachungsumfang enthalten sein.
Empfohlenes Lernen:
MySQL-Video-Tutorial
Das obige ist der detaillierte Inhalt vonSo fragen Sie eine langsame SQL-Anweisung in MySQL ab. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!