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

Welchen MySQL-Eindeutigen Index oder Normalen Index soll ich wählen?

Stellen Sie sich ein Szenario vor, in dem beim En...

So kapseln Sie Axios in Vue

Inhaltsverzeichnis 1. Installation 1. Einleitung ...

Schnelles Verständnis des Vue-Routing-Navigationsschutzes

Inhaltsverzeichnis 1. Globale Wache 1. Globale Fr...

So führen Sie eine Spring Boot-Anwendung in Docker aus

In den letzten Tagen habe ich gelernt, wie man Sp...

Zusammenfassung von 10 erstaunlichen Tricks von Element-UI

Inhaltsverzeichnis el-scrollbar Bildlaufleiste el...

Lösung für Front-End-Browser-Schriftgrößen von weniger als 12 Pixel

Vorwort Als ich kürzlich an einem Projekt arbeite...

Linux 6 Schritte zum Ändern der Standard-Remote-Portnummer von SSH

Der Standard-SSH-Remote-Port in Linux ist 22. Man...