Heim  >  Artikel  >  Datenbank  >  Was ist eine langsame MySQL-Abfrage?

Was ist eine langsame MySQL-Abfrage?

青灯夜游
青灯夜游Original
2022-02-17 16:37:107216Durchsuche

In MySQL bezieht sich die langsame Abfrage auf die SQL-Anweisung, die langsam ausgeführt und im Protokoll aufgezeichnet wird. Sie bezieht sich auf die Ausführung der SQL-Anweisungsabfrage, die den durch den Parameter „long_query_time“ festgelegten Zeitschwellenwert überschreitet. Langsame Abfragen werden im Protokoll für langsame Abfragen aufgezeichnet. Mithilfe des Protokolls für langsame Abfragen können Sie herausfinden, welche Abfrageanweisungen eine geringe Ausführungseffizienz aufweisen.

Was ist eine langsame MySQL-Abfrage?

Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.

Was ist eine langsame Abfrage?

Eine langsame Abfrage zeichnet SQL-Anweisungen auf, die langsam im Protokoll ausgeführt werden. Dies bedeutet, dass MySQL alle SQL-Anweisungsabfragen aufzeichnet, die den durch den Parameter long_query_time festgelegten Zeitschwellenwert überschreiten.

Langsame Abfragen werden im Protokoll für langsame Abfragen aufgezeichnet. Mithilfe des Protokolls für langsame Abfragen können Sie herausfinden, welche Abfrageanweisungen zur Optimierung eine geringe Ausführungseffizienz aufweisen. Dieses Protokoll kann eine große Hilfe bei der Optimierung von SQL-Anweisungen sein.

Standardmäßig ist das Protokoll für langsame Abfragen deaktiviert. Um die Protokollfunktion für langsame Abfragen verwenden zu können, müssen Sie zunächst die Protokollfunktion für langsame Abfragen aktivieren.

Konfiguration des Protokolls für langsame Abfragen

1. Grundkonfiguration für langsame Abfragen )

long_query_time gibt an, den SQL-Ausführungszeitwert des langsamen Abfrageprotokolls aufzuzeichnen (Einheit: Sekunden, Standard 10 Sekunden)
  • log_queries_not_using_indexes Ob SQL aufgezeichnet werden soll, das keine Indizes verwendet
  • log_output Wo das Protokoll gespeichert ist [TABLE] [FILE] [ DATEI, TABELLE]
  • Nach der Konfiguration einer langsamen Abfrage wird qualifiziertes SQL aufgezeichnet
  • einschließlich:
Abfrageanweisung

Datenänderungsanweisung

SQL, das zurückgesetzt wurde
  • 2
  • Über den folgenden Befehl anzeigen Konfigurieren Sie als Nächstes die obige Konfiguration:
  • show VARIABLES like '%slow_query_log%'
    show VARIABLES like '%slow_query_log_file%'
    show VARIABLES like '%long_query_time%'
    show VARIABLES like '%log_queries_not_using_indexes%'
    show VARIABLES like 'log_output'
  • Legen Sie die langsamen Abfrageparameter fest:
set global long_query_time=0;   ---默认10秒,这里为了演示方便设置为0
set GLOBAL  slow_query_log = 1; --开启慢查询日志
set global log_output='FILE,TABLE'  --项目开发中日志只能记录在日志文件中,不能记表中

Nachdem die Einstellungen abgeschlossen sind, fragen Sie einige Listen ab und Sie werden feststellen, dass Daten in der Protokolldatei für langsame Abfragen vorhanden sind. Aber auf meinem Computer weiß ich nicht warum, aber die SQL-Ergebnisse können derzeit nicht normal ausgeführt werden. Kann nicht aktualisiert werden;

Wir können also diese Methode verwenden:

Suchen Sie my.cnf und fügen Sie den folgenden Inhalt hinzu

# 添加慢查询日志
log_output=file
slow_query_log=on
slow_query_log_file = /tmp/mysql-slow.log
log_queries_not_using_indexes=on
long_query_time = 1

3. Überprüfen Sie das langsame Abfrageprotokoll

Wenn Sie sehen möchten, welche Abfrageanweisungen eine geringe Ausführungseffizienz haben , können Sie Informationen aus dem langsamen Abfrageprotokoll erhalten. Wie Fehlerprotokolle und Abfrageprotokolle werden auch Protokolle langsamer Abfragen in Form von Textdateien gespeichert und können mit gewöhnlichen Textdatei-Anzeigetools angezeigt werden.

Beispiel 1

Aktivieren Sie die MySQL-Funktion für langsame Abfragen und stellen Sie die Zeit ein. Der Befehls- und Ausführungsprozess ist wie folgt:

mysql> SET GLOBAL slow_query_log=ON;
Query OK, 0 rows affected (0.05 sec)

mysql> SET GLOBAL long_query_time=0.001;
Query OK, 0 rows affected (0.00 sec)

Aus Gründen der Demonstration stellen wir die Zeit auf 0,001 Sekunden ein Die Ausführung dauert weniger als 0,001 Sekunden und wird im Protokoll aufgezeichnet.

Um die Daten in der Tabelle tb_student abzufragen, lauten die SQL-Anweisung und der Ausführungsprozess wie folgt:

mysql> USE test;
Database changed
mysql> SELECT * FROM tb_student;
+----+--------+
| id | name   |
+----+--------+
|  1 | Java   |
|  2 | MySQL  |
|  3 | Python |
+----+--------+
3 rows in set (0.08 sec)

Entsprechend lautet ein Teil des Inhalts des langsamen Abfrageprotokolls wie folgt:

# Time: 2020-06-01T01:59:18.368780Z
# User@Host: root[root] @ localhost [::1]  Id:     3
# Query_time: 0.006281  Lock_time: 0.000755 Rows_sent: 2  Rows_examined: 1034
use test;
SET timestamp=1590976758;
SHOW VARIABLES LIKE 'slow_query%';

4. Löschen Sie das langsame Abfrageprotokoll

So löschen Sie das Protokoll für langsame Abfragen und das allgemeine Protokoll. Die Löschmethode ist dieselbe. Kann mit dem Befehl mysqladmin gelöscht werden. Es kann auch manuell gelöscht werden. Die Syntax des mysqladmin-Befehls lautet wie folgt:

mysqladmin -uroot -p flush-logs

Nach der Ausführung des Befehls werden Sie in der Befehlszeile zur Eingabe des Passworts aufgefordert. Nach Eingabe des korrekten Passwortes wird der Löschvorgang durchgeführt. Das neue langsame Abfrageprotokoll überschreibt direkt das alte Abfrageprotokoll und es ist nicht erforderlich, es manuell zu löschen.

Der Datenbankadministrator kann das langsame Abfrageprotokoll auch manuell löschen. Nach dem Löschen muss der MySQL-Dienst neu gestartet werden.

Hinweis: Sowohl das allgemeine Abfrageprotokoll als auch das langsame Abfrageprotokoll verwenden diesen Befehl. Beachten Sie bei der Verwendung unbedingt, dass nach der Ausführung dieses Befehls das allgemeine Abfrageprotokoll und das langsame Abfrageprotokoll nur in neuen Protokolldateien vorhanden sind . Wenn Sie alte Protokolldateien für langsame Abfragen sichern müssen, müssen Sie zuerst die alten Protokolle umbenennen und dann den MySQL-Dienst neu starten oder den Befehl mysqladmin ausführen.

【Verwandte Empfehlungen:

MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist eine langsame MySQL-Abfrage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn