Anzeigen und Analysieren des MySQL-Ausführungsstatus

Anzeigen und Analysieren des MySQL-Ausführungsstatus

Wenn Sie den Eindruck haben, dass ein Problem mit der MySQL-Leistung vorliegt, prüfen Sie normalerweise zuerst den aktuellen MySQL-Ausführungsstatus. Verwenden Sie dazu beispielsweise show processlist :

Die Informationen in der Statusspalte sind sehr wichtig. Schauen Sie sich zuerst die Bedeutung jeder Spalte an und dann den allgemeinen Statusstatus.

Bedeutung der Spalten

1. Ich würde

Ein Flag, das Sie verwenden, wenn Sie eine Anweisung beenden möchten, zum Beispiel mysql> kill 207;

2. Nutzer

Zeigt den aktuellen Benutzer an. Wenn Sie kein Root sind, zeigt dieser Befehl nur die SQL-Anweisungen innerhalb Ihres Berechtigungsbereichs an.

3. Gastgeber

Zeigt an, von welcher IP-Adresse und welchem ​​Port die Anweisung gesendet wurde. So lässt sich der Benutzer ermitteln, der die problematische Anweisung ausgegeben hat.

4.db

Zeigt an, mit welcher Datenbank dieser Prozess aktuell verbunden ist

5. Befehl

Zeigt die Befehle an, die von der aktuellen Verbindung ausgeführt werden, im Allgemeinen sleep, query und connect

6. Zeit

Die Dauer dieses Zustands in Sekunden

7. Staat

Zeigt den Status der SQL-Anweisung unter Verwendung der aktuellen Verbindung an. Dies ist eine sehr wichtige Spalte. Der Status ist lediglich ein bestimmter Zustand bei der Ausführung der Anweisung. Beispielsweise muss eine Abfrage die Zustände „In temporäre Tabelle kopieren“, „Ergebnis sortieren“ und „Daten senden“ durchlaufen, bevor sie abgeschlossen werden kann.

8.Informationen

Zeigen Sie dieses SQL-Statement an. Wegen der begrenzten Länge werden lange SQL-Statements nicht vollständig angezeigt, es ist aber eine wichtige Grundlage zur Beurteilung von Problemstellungen.

Zustand Gemeinsame Zustandsanalyse

1. Schlaf

Bedeutet normalerweise, dass Ressourcen nicht freigegeben werden. Wenn dies über einen Verbindungspool erfolgt, sollte der Ruhezustand innerhalb eines bestimmten Bereichs konstant sein, zum Beispiel:

Die Datenabfragezeit beträgt 0,1 Sekunden, während die Netzwerkausgabe etwa 1 Sekunde dauert. Die ursprüngliche Datenverbindung kann in 0,1 Sekunden freigegeben werden. Da das Front-End-Programm jedoch den Schließvorgang nicht ausführt und das Ergebnis direkt ausgibt, bleibt die Datenbankverbindung im Ruhezustand, bevor das Ergebnis auf dem Desktop des Benutzers angezeigt wird.

2. Gesperrt

Der Vorgang ist gesperrt. Normalerweise kann die Verwendung von innodb das Auftreten des Sperrstatus effektiv reduzieren.

3. In die temporäre Tabelle kopieren

Wenn der Index und die vorhandene Struktur die Abfragebedingungen nicht abdecken können, wird eine temporäre Tabelle erstellt, um die Abfrageanforderungen zu erfüllen, was einen enormen E/A-Druck erzeugt. Das Kopieren in die temporäre Tabelle bezieht sich normalerweise auf Tabellenverknüpfungsabfragen. Es wird empfohlen, die zugehörigen Abfragen zu reduzieren oder Abfrageanweisungen gründlich zu optimieren. Wenn die Ausführungszeit einer Anweisung in diesem Zustand zu lang ist, wirkt sich dies ernsthaft auf andere Vorgänge aus. In diesem Fall können Sie den Vorgang abbrechen.

4. Übermittlung von Daten

Beim Senden von Daten handelt es sich nicht um das Senden von Daten, sondern um den Vorgang, Daten von der physischen Festplatte abzurufen. Wenn Sie eine große Anzahl von Ergebnismengen haben, müssen Sie Daten aus verschiedenen Festplattenfragmenten extrahieren. Wenn zu viele Verbindungen zum Senden von Daten vorhanden sind, liegt dies normalerweise daran, dass die Ergebnismenge einer Abfrage zu groß ist, d. h. das Indexelement der Abfrage ist nicht ausreichend optimiert.

5. Ergebnisse im Abfrage-Cache speichern

Wenn dieser Status häufig auftritt, verwenden Sie zur Analyse set profiling . Wenn der Ressourcen-Overhead einen großen Anteil des gesamten SQL-Overheads ausmacht (auch wenn der Overhead sehr gering ist, sehen Sie sich den Anteil an), bedeutet dies, dass der Abfragecache fragmentiert ist. Verwenden Sie flush query cache um ihn sofort zu leeren. Die Abfragecache-Parameter können entsprechend eingestellt werden.

Die beiden häufigsten Engpässe bei MySQL-Datenbanken sind CPU- und I/O-Engpässe. Eine CPU-Sättigung tritt normalerweise auf, wenn Daten in den Speicher geladen oder von der Festplatte gelesen werden. Der Festplatten-E/A-Engpass tritt auf, wenn die geladenen Daten viel größer sind als die Speicherkapazität. Wenn die Anwendung im Netzwerk verteilt ist, tritt der Engpass im Netzwerk auf, wenn das Abfragevolumen sehr groß ist. Wir können mpstat, iostat, sar und vmstat verwenden, um den Leistungsstatus des Systems anzuzeigen.

Neben dem Leistungsengpass der Serverhardware können wir für das MySQL-System selbst Tools verwenden, um die Leistung der Datenbank zu optimieren. Normalerweise gibt es drei Arten: Verwenden von Indizes, Verwenden von EXPLAIN zum Analysieren von Abfragen und Anpassen der internen Konfiguration von MySQL.

Bei der Optimierung von MySQL müssen Sie normalerweise die Datenbank analysieren. Zu den üblichen Analysemethoden gehören langsame Abfrageprotokolle, EXPLAIN-Analyseabfragen, Profilanalyse und der Befehl „show“ zur Abfrage des Systemstatus und der Systemvariablen. Nur durch das Auffinden und Analysieren von Leistungsengpässen kann die Leistung des Datenbanksystems besser optimiert werden.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Wenn Sie mehr darüber erfahren möchten, schauen Sie sich bitte die folgenden Links an

Das könnte Sie auch interessieren:
  • So implementieren Sie eine geplante Sicherung einer MySQL-Datenbank
  • Eine kurze Analyse der Verwendung von JDBC zum Betreiben von MySQL erfordert das Hinzufügen von Class.forName("com.mysql.jdbc.Driver")
  • Backup zwischen MySQL-Datenbank und Oracle-Datenbank importieren
  • Die einfachste Online-Fragenbank (Online-Fragensystem), entwickelt mit php+mysql
  • Detaillierte Erklärung, wie eine SQL-Anweisung in MySQL ausgeführt wird
  • MySQL Datenbank 8 - detaillierte Erklärung der Anwendung von Funktionen in der Datenbank
  • Detaillierte Erläuterung des MySQL-Download- und Installationsprozesses
  • Zusammenfassung der MySQL-Funktionsmethode LOAD_FILE()
  • Das ausführliche Tutorial zum Herunterladen und Installieren von MySQL 8.0.15 ist für Anfänger ein Muss!
  • Die Verwendung eines eindeutigen MySQL-Schlüssels in Abfragen und damit verbundene Probleme

<<:  Vue+js: Klicken Sie auf den Pfeil, um die Bilder zu wechseln

>>:  Tutorial zur Konfiguration von SSH und Xshell für die Verbindung zum Server unter Linux (mit Bildern)

Artikel empfehlen

Kleine Details der Web-Frontend-Entwicklung

1 Das Select-Tag muss geschlossen sein <select&...

Vue.js implementiert eine Bildwechselfunktion

In diesem Artikel wird der spezifische Code von V...

Detaillierter Prozess der FastAPI-Bereitstellung auf Docker

Docker-Lernen https://www.cnblogs.com/poloyy/p/15...

Implementierung einer benutzerdefinierten Vue-Vorlage von vscode

Verwenden Sie den Vscode-Editor, um eine Vue-Vorl...

Detaillierte Beispiele zur Verwendung der Box-Shadow-Eigenschaft in CSS3

CSS enthält viele Attribute. Manche Attribute wer...

Tiefgreifendes Verständnis des Javascript-Klassenarrays

js-Arrays sind wahrscheinlich jedem bekannt, da s...

Eine kurze Diskussion über die Typen von node.js-Middleware

Inhaltsverzeichnis Überblick 1. Middleware auf An...

Docker-Bindung mit fester IP/Hostübergreifender Container-Gegenzugriffsvorgang

Vorwort Bisher waren statische IPs, die über Pipe...

Implementierungscode der Front-End-HTML-Skin-Änderungsfunktion

50 Zeilen Code zum Ändern von 5 Hautfarben, einsc...

Vue implementiert Klick-Feedback-Anweisungen für den Wasserwelleneffekt

Inhaltsverzeichnis Wasserwelleneffekt Sehen wir u...

Anpassungsmethode des Linux-Peripheriedateisystems

Vorwort Wenn wir von Linux-Systemen sprechen, mei...