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:
|
>>: Beispiel für das Erreichen eines Deckeneffekts mit dem WeChat-Applet
Inhaltsverzeichnis Dropdown-Feld zur Mehrfachausw...
Betriebssystem: Windows 10 MySQL-Version: 8.0.13-...
MySql herunterladen 1. Öffnen Sie die offizielle ...
Was ist Volumen? „Volume“ bedeutet auf Englisch K...
1. Festplattenpartition: 2. fdisk-Partition Wenn ...
1. Führen Sie SQL aus, um anzuzeigen wählen Sie @...
Inhaltsverzeichnis 1. Welche Inhalte müssen üblic...
getElementById kann das Objekt nicht abrufen Beim...
Einführung Dies ist Ihnen sicherlich schon einmal...
Inhaltsverzeichnis 1. Wie verwende ich Mixin? 2. ...
Standardmäßig sind MySQL-Zeichentypen nicht case-...
Konfiguration Vorwort Projektaufbau: basierend au...
Inhaltsverzeichnis Finden Sie das Problem 1. So e...
1. Einen Benutzer anlegen: Befehl: CREATE USER ...
1. Commonjs Commonjs ist ein benutzerdefiniertes ...