Suche mit Schlüsselwörtern, d.h. Tabellennamen oder Spaltennamen.
Während Sie Ihre mobile App oder eine Webanwendung oder eine Desktopanwendung verwenden, wissen Sie, welche Seite mehr Zeit benötigt, um geladen zu werden. Die Ladezeit wird oft von den Abfragen beeinflusst, die im Hintergrund ausgeführt werden. Dies ist jedoch nur der Fall, wenn wir Synchronisierungsaufrufe statt asynchrone Aufrufe durchführen, um die Daten abzurufen. Wenn Sie also die Seite/den Bereich kennen, der langsam geladen wird, haben Sie eine Liste mit Abfragen, die beim Laden auf dieser Seite ausgeführt werden, und eine Liste mit Abfragen, die ausgelöst werden, weil Sie auf dieser Seite eine Aktion ausführen. Sobald Sie die Abfragen kennen, werden Sie wissen, welche Tabellen verwendet werden und welche Spalten abgerufen werden.
Jetzt, wenn Sie das langsame Abfrageprotokoll durchsuchen und Sie sehr hohe Standards für sich selbst festgelegt haben und die langsame Abfragezeit auf 400 Millisekunden setzen, besteht die Möglichkeit, dass Ihr langsames Abfrageprotokoll geladen wird, es sei denn, Sie sind ein Genie . Also, wir tun, um diese einfache Sache:
grep 'table_name' /var/lib/mysql/mysql-slow.log
Dies stellt mehr Probleme als sie löst, weil alle wichtigen Fragen offen bleiben, wie dies die Abfragezeit nicht geben, Abfragedatum usw. Also, dies tun:
grep -B 3 'table_name' /var/lib/mysql/mysql-slow.log
-B x gibt Ihnen x Anzahl der Zeilen vor der Abfrage.
Wir würden das brauchen, weil die 3 Zeilen vor der eigentlichen Abfrage alle Informationen über die Ausführung der Abfrage enthalten - wann wurde die Abfrage ausgeführt und wie viel Zeit hat sie gedauert?
Ein alternativer:
grep -A 3 'query_user' /var/lib/mysql/mysql-slow.log
Anzahl der langsamen Abfragen während des Tages, Stunde weise
grep Time mysql-slow.log | cut -d: -f1,2 | sort -r | uniq -c
Ein Hinweis hier: Sie können entweder sort -u verwenden, oder Sie verwenden können sortieren | uniq -c aber sicher sein, dass uniq nicht unabhängig arbeiten wird, wird es nur funktionieren, wenn Sie es mit sortieren. Die Sortierung sollte vor uniq erfolgen.
mysqldumpslow mit dem Log
Getting die Top-10 leistungsschwache Abfragen zu analysieren.
mysqldumpslow -u root -p -s c -t 10
Wenn Sie in detaillierte Log-Analysen erhalten müssen, sollten Sie die ELK-Stack auf Ihrem Computer und schließen Sie mysql in die Log-Analyse-Setup einrichten.Oder Sie können NewRelic zum Analysieren von MySQL-Protokollen verwenden.
Für mysqldumpslow bevorzuge ich "-s t", um nach "Auswirkungen auf System" zu sortieren. Eine schlecht indizierte Abfrage kann unwichtig sein, wenn sie sehr selten ist. –
@RickJames - Ist ELK eine praktikable Option um MySQL Logs zu analysieren? – MontyPython
Sorry, ich weiß nicht über ELK. Ich habe mich mit der langsamen Anmeldung von Hunderten von Servern beschäftigt und festgestellt, dass _in der Regel _ die _meisten_ nützlichen Informationen in den ersten paar Abfragen angezeigt werden, die von mysqldumpslow -s-t oder pt-query-Digest angezeigt werden.Zeig mir die ersten paar Fragen (plus 'CREATE TABLE' und' EXPLAIN') und ich kann _insergewöhnlich_ wichtige Hinweise geben. –