Heim > Datenbank > MySQL-Tutorial > Hauptteil

So fragen Sie eine langsame SQL-Anweisung in MySQL ab

WBOY
Freigeben: 2022-05-26 15:41:02
Original
13216 Leute haben es durchsucht

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.

So fragen Sie eine langsame SQL-Anweisung in MySQL 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:

So fragen Sie eine langsame SQL-Anweisung in MySQL ab

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

So fragen Sie eine langsame SQL-Anweisung in MySQL ab

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

So fragen Sie eine langsame SQL-Anweisung in MySQL ab

Setzen Sie die langsame Abfrageverfolgungszeit auf 1 Sekunde:

So fragen Sie eine langsame SQL-Anweisung in MySQL ab

Nachdem Sie dies festgelegt haben , die Welt ist nicht Es wird sofort 1s und wird nach dem Neustart der Datenbank wirksam:

So fragen Sie eine langsame SQL-Anweisung in MySQL ab

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

So fragen Sie eine langsame SQL-Anweisung in MySQL ab

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage