Beispielanalyse langsamer MySQL-Abfragevorgänge [Aktivieren, Testen, Bestätigen usw.]

Beispielanalyse langsamer MySQL-Abfragevorgänge [Aktivieren, Testen, Bestätigen usw.]

Dieser Artikel beschreibt die langsame MySQL-Abfrageoperation anhand von Beispielen. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

Einige MySQL-SQL-Anweisungen werden möglicherweise sehr langsam ausgeführt, was zu einer starken Serverauslastung führen kann.

Überprüfen Sie zunächst mithilfe des Top-Befehls, des PS-Befehls usw., ob MySQL die Last verursacht.

Geben Sie als Nächstes MySQL ein und verwenden Sie den Befehl „show full processlist“, um die ausgeführten SQL-Anweisungen abzufragen und das Problem zu ermitteln. Verwenden Sie den Befehl „explain“, um den Status anzuzeigen.

Suchen Sie abschließend die zu beendende oder zu optimierende SQL-Anweisung

Installieren Sie den MariaDB-Dienst auf CentOS7

yum -y installiere MariaDB-Server MariaDB-Devel

Langsame Abfrage aktivieren

mehr /etc/my.cnf.d/server.cnf
[Mariadb]
slow_query_log=EIN
slow_query_log_file=/usr/local/mysql/data/slow.log
lange_Abfragezeit=1

Starten Sie den MariaDB-Dienst

systemctl starte mariadb

Überprüfen Sie, ob die langsame MySQL-Abfrage aktiviert ist und wie lange die oben genannte Abfrage langsam ist.

MariaDB [(keine)]> Variablen wie „%slow_query%“ anzeigen;
+---------------------+--------------------------------+
| Variablenname | Wert |
+---------------------+--------------------------------+
| slow_query_log | EIN |
| slow_query_log_datei | /usr/local/mysql/data/slow.log |
+---------------------+--------------------------------+
2 Zeilen im Satz (0,00 Sek.)

MariaDB [(keine)]> Variablen wie „long_query_time“ anzeigen;
+-----------------+----------+
| Variablenname | Wert |
+-----------------+----------+
| lange Abfragezeit | 1.000000 |
+-----------------+----------+
1 Zeile im Satz (0,00 Sek.)

#Wenn Sie langsame Abfragen nicht aktiviert haben, können Sie sie in der Befehlszeile aktivieren mysql> set global slow_query_log=1;
Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)

Testen Sie langsame Abfragen und zeigen Sie Protokolle an

MariaDB [(keine)]> wähle sleep(2);
+----------+
| schlafen(2) |
+----------+
| 0 |
+----------+
1 Zeile im Satz (2,00 Sek.)

[root@localhost ~]# mehr /usr/local/mysql/data/slow.log
/usr/libexec/mysqld, Version: 5.5.60-MariaDB (MariaDB-Server). gestartet mit:
TCP-Port: 0 Unix-Socket: /var/lib/mysql/mysql.sock
Zeit-ID-Befehlsargument
# Zeit: 180930 23:51:07
# Benutzer@Host: root[root] @ localhost []
# Thread_id: 2 Schema: QC_hit: Nein
# Abfragezeit: 2.001017 Sperrzeit: 0.000000 Gesendete Zeilen: 1 Untersuchte Zeilen: 0
SET-Zeitstempel=1538322667;
wähle sleep(2);

Bestätigen langsamer Abfragen

MariaDB [(keine)]> vollständige Prozessliste anzeigen; #Status anzeigen langsame Abfrage läuft +----+------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+-----------------------+----------+
| ID | Benutzer | Host | db | Befehl | Zeit | Status | Info | Fortschritt |
+----+------+--------------+------+---------+---------+---------+---------+-----------------------+----------+
| 3 | root | localhost | NULL | Abfrage | 9 | Benutzer sleep | select sleep(10) | 0.000 |
| 4 | root | localhost | NULL | Abfrage | 0 | NULL | vollständige Prozessliste anzeigen | 0.000 |
+----+------+--------------+------+---------+---------+---------+---------+-----------------------+----------+
2 Zeilen im Satz (0,00 Sek.)

MariaDB [(keine)]> vollständige Prozessliste anzeigen; #Überprüfen Sie den Status. Die langsame Abfrage wurde beendet, aber der Benutzer ist angemeldet. +----+------+-----------+---------+---------+------+---------+------+---------+-----------+-----------+-----------+
| ID | Benutzer | Host | db | Befehl | Zeit | Status | Info | Fortschritt |
+----+------+--------------+------+---------+-----------+-----------+-----------+---------------------------+-------------+
| 3 | root | localhost | NULL | Schlaf | 1 | | NULL | 0.000 |
| 4 | root | localhost | NULL | Abfrage | 0 | NULL | vollständige Prozessliste anzeigen | 0.000 |
+----+------+--------------+------+---------+-----------+-----------+-----------+---------------------------+-------------+
2 Zeilen im Satz (0,00 Sek.)

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „Zusammenfassung der allgemeinen MySQL-Funktionen“, „MySQL-Protokolloperationskenntnisse“, „Zusammenfassung der MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“ und „Zusammenfassung der MySQL-Datenbanksperrenkenntnisse“.

Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist.

Das könnte Sie auch interessieren:
  • So verwenden Sie MySQL-Stresstest-Tools
  • PHP+MySQL zur Implementierung eines Beispiels für die Beantwortung eines Online-Tests
  • Detaillierte Erklärung des mysqlslap-Befehls und der Syntax für den integrierten Stresstest in MySQL 5.7
  • So erstellen Sie schnell zig Millionen Testdaten in MySQL
  • Test und Lösung für den großen Speicherverbrauch und die hohe CPU-Auslastung von MySQL
  • Detailliertes Tutorial zur Verwendung von Sysbench zum Testen der MySQL-Leistung
  • MySQL-Schleifenanweisung während des Schleifentests
  • MySQL-Datenbank implementiert OLTP-Benchmark-Test basierend auf Sysbench

<<:  Schritte zum Konfigurieren von IIS10 unter Win10 und zum Unterstützen des Debuggens von ASP-Programmen

>>:  Beispiel für das Erreichen eines Deckeneffekts mit dem WeChat-Applet

Artikel empfehlen

So zeigen Sie im Hintergrund laufende Programme in Linux an und schließen sie

1. Führen Sie die .sh-Datei aus Sie können es dir...

So legen Sie den Fokus auf HTML-Elemente fest

Code kopieren Der Code lautet wie folgt: <Körp...

Installieren Sie CentOS 7 auf VMware14 – Grafik-Tutorial

Einführung in CentOS CentOS ist eine Linux-Distri...

Mysql GTID Mha-Konfigurationsmethode

Gtid + Mha + Binlog-Serverkonfiguration: 1: Testu...

Detaillierte Erklärung der Anwendungsfälle von Vue-Listenern

Die erste Möglichkeit besteht darin, jQuery's...

So verwenden Sie Provide zur Implementierung der Statusverwaltung in Vue3

Inhaltsverzeichnis Vorwort So implementieren Sie ...

Hinweise zum MySQL-Datenbank-Sicherungsprozess

Heute habe ich mir einige Dinge im Zusammenhang m...

Allgemeine Shell-Skriptbefehle und zugehöriges Wissen unter Linux

Inhaltsverzeichnis 1. Einige Punkte, die Sie beac...

Beispiel für die Migration einer MySQL-Online-Protokollbibliothek

Ich möchte Ihnen von einem aktuellen Fall erzähle...