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

Detaillierte Erläuterung des Anwendungsbeispiels für den JQuery-Tag-Selektor

In diesem Artikelbeispiel wird der spezifische Co...

HTML-Endtag-Problem und W3C-Standard

Gemäß den Grundsätzen des W3C muss jedes Start-Tag...

Detaillierte Erklärung der Docker-Einstiegspunktdatei

Schließen Sie beim Schreiben einer Docker-Datei e...

Docker View JVM-Speichernutzung

1. Rufen Sie den Hostcomputer des Docker-Containe...

Detaillierte Erläuterung der Konfiguration der Alibaba Cloud-Sicherheitsregeln

Vor zwei Tagen habe ich das Double 11-Shopping-Fe...

Grafisches Tutorial zur Installation und Konfiguration von CenOS6.7 mysql 8.0.22

CenOS6.7 installiert MySQL8.0.22 (empfohlene Samm...

Anleitung zur Verwendung von env in vue cli

Inhaltsverzeichnis Vorwort Einführung-Offiziell B...

MySQL effiziente Abfrage Left Join und Gruppieren nach (plus Index)

MySQL effiziente Abfrage MySQL verzichtet auf „Gr...

Analyse des Parameterübertragungsprozesses des Treibermoduls in Linux

Deklarieren Sie den Parameternamen, den Typ und d...

MySQL 5.6.28 Installations- und Konfigurations-Tutorial unter Linux (Ubuntu)

mysql5.6.28 Installations- und Konfigurationsmeth...

JavaScript-Kreisdiagrammbeispiel

ZeicheneffekteImplementierungscode JavaScript var...

Django-Online-Bereitstellungsmethode von Apache

Umfeld: 1. Windows Server 2016 Datacenter 64-Bit ...