Heim  >  Artikel  >  Datenbank  >  So aktivieren Sie das langsame MySQL-Abfrageprotokoll

So aktivieren Sie das langsame MySQL-Abfrageprotokoll

WBOY
WBOYnach vorne
2023-05-27 12:31:143764Durchsuche

1. Was ist MySQL Query Slow Log

MySQL Query Slow Log ist MySQLs eigenes Leistungsanalysetool, mit dem Abfrageanfragen aufgezeichnet werden, die den angegebenen Zeitschwellenwert überschreiten. Das langsame Abfrageprotokoll zeichnet verschiedene Leistungsindikatoren für jede Abfrage auf, z. B. die erforderliche Zeit, die Anzahl der Ausführungen und den Ausführungsplan. Entwickler können diese Metriken verwenden, um Abfragen zu identifizieren, die optimiert werden müssen, um die Effizienz zu verbessern und entsprechende Maßnahmen zu ergreifen.

Standardmäßig ist das langsame Abfrageprotokoll von MySQL normalerweise nicht aktiviert und erfordert eine manuelle Konfiguration, um es zu aktivieren. Die Abfrage des langsamen Protokolls kann durch Festlegen von Parametern in der MySQL-Konfigurationsdatei (my.cnf) aktiviert werden. Das Folgende ist eine Beispielkonfiguration für die Abfrage langsamer Protokolle:

slow_query_log = 1

slow_query_log_file = /var/log/mysql/mysql-slow.log

log_queries_not_using_indexes = 1

long_query_time = 2

wobei die slow_ Der Parameter query_log wird verwendet Um das langsame Protokoll abzufragen, gibt der Parameter slow_query_log_file den Speicherort der langsamen Abfrageprotokolldatei an. Der Parameter log_queries_not_using_indexes wird verwendet, um nicht verwendete Informationen des langsamen Abfrageindex zu protokollieren. Der Parameter long_query_time wird verwendet, um das Abfrage-Timeout in Sekunden anzugeben.

2. So aktivieren Sie das MySQL-Protokoll für langsame Abfragen

Standardmäßig aktivieren MySQL 5.7 und höhere Versionen das Protokoll für langsame Abfragen. Eine manuelle Konfiguration ist erforderlich, um die Funktion „Query Slow Log“ zu aktivieren, insbesondere für ältere Versionen von MySQL, wie MySQL 5.6 oder 5.5 usw. Im Folgenden finden Sie die detaillierten Schritte zum Aktivieren des langsamen MySQL-Abfrageprotokolls:

  1. Öffnen Sie die MySQL-Konfigurationsdatei

Standardmäßig lautet der Pfad der MySQL-Konfigurationsdatei im Linux-System /etc/my.cnf. In Windows-Systemen befindet sich die Konfigurationsdatei normalerweise in C:Program FilesMySQLMySQL Servermy.ini oder C:ProgramDataMySQLMySQL Servermy.ini. Öffnen Sie die Datei mit Ihrem bevorzugten Editor.

  1. Abfrage-Slow-Log aktivieren

Suchen Sie die folgende Zeile in der Konfigurationsdatei:

slow_query_log = 0

Entfernen Sie das Kommentarsymbol # in dieser Zeile und ändern Sie den Wert auf 1.

slow_query_log = 1

  1. Geben Sie den Pfad der langsamen Protokolldatei an

Suchen Sie die folgende Zeile:

slow_query_log_file = /var/log/mysql/mysql-slow.log

Entfernen Sie das Kommentarsymbol # in dieser Zeile , und ändern Sie den Dateipfad in den gewünschten Pfad. " Ändern Sie den Wert auf den gewünschten Abfrage-Timeout-Schwellenwert in Sekunden.

long_query_time = 2

  1. Konfigurieren Sie den Schalter für nicht verwendete Indexinformationen.

Suchen Sie die folgende Zeile:

log_queries_not_using_indexes = 0

    Entfernen Sie das Kommentarsymbol # in dieser Zeile und ändern Sie den Wert auf 1 , um ungenutzte langsame Abfrageindizes bei Protokollierungsvorgängen zu aktivieren.
  1. log_queries_not_using_indexes = 1

Speichern und schließen Sie die Konfigurationsdatei.

  • Überprüfen Sie, ob die Konfigurationsdatei gespeichert wurde, und schließen Sie die Datei.

Starten Sie den MySQL-Dienst neu.

    Verwenden Sie den folgenden Befehl, um den MySQL-Dienst neu zu starten:
  1. sudo systemctl restart mysqld Langsames Protokoll abfragen, dann abfragen Das langsame Protokoll zeichnet automatisch Abfrageinformationen auf und speichert sie in der angegebenen Abfrage-langsamen Protokolldatei. Sie können den folgenden Befehl verwenden, um das Protokoll für langsame Abfragen anzuzeigen:

  2. sudo tail -n 100 /var/log/mysql/mysql-slow.log

Verwenden Sie diesen Befehl, um die neuesten 100 Protokolleinträge für langsame Abfragen anzuzeigen. Sie können auch die Anzahl der angezeigten Zeilen nach Ihren Wünschen ändern. Die Ausgabe umfasst die Zeit, die zum Ausführen der langsamen Abfrage erforderlich ist, sowie alle an der Abfrage beteiligten Datentabellen und Unterabfragen.

    Wenn Sie langsame Protokolle nach Datumsfilterung abfragen müssen, können Sie grep und awk verwenden, um die Protokolle unter Linux zu filtern, wie unten gezeigt:
  1. grep „21-Jun-2022“ /var/log/mysql/mysql-slow .log |. awk '{print substr($2,0,length($2)-1)" "$3$4" "$5}' |. Dieser Befehl gibt am 21. Juni 2022 alle Zeitstempel aus, die langsame Abfrageprotokolle enthalten.

4. So analysieren und optimieren Sie langsame MySQL-Abfrageprotokolle

Nachdem Sie genügend langsame MySQL-Abfrageprotokolle gesammelt haben, können Sie diese analysieren, um die Abfragen zu ermitteln, die optimiert werden müssen. Hier sind einige Best Practices zum Analysieren und Optimieren der Abfrageleistung:

Parsen Sie langsame Abfrageprotokolle mit pt-query-digest.

pt-query-digest ist eine Open-Source-Software, die Ihnen bei der Analyse langsamer MySQL-Abfrageprotokolle helfen kann die dabei auftretenden Probleme zu optimieren. Hier sind die Schritte zur Installation und Verwendung von pt-query-digest:

Percona Toolkit installieren

Unter CentOS 7 können Sie es mit dem folgenden Befehl installieren.

yum installiere https://repo.percona.com/yum/percona-release-latest.noarch.rpmyum installiere percona-toolkit

  • Protokolle langsamer Abfragen analysieren

Sie können den folgenden Befehl verwenden, um pt-query-digest zum Parsen langsamer Abfrageprotokolle zu verwenden.

pt-query-digest /var/log/mysql/mysql-slow.log > slow-query-analysis.out

  • Analysieren Sie das Abfrage-Slow-Log

Verwenden Sie pt-query-digest, um eine detaillierte Abfrage zu erhalten Analysebericht zu langsamen Abfrageprotokollen. Sie können nach den Abfragen suchen, die am häufigsten auftreten und die längsten Zeitüberschreitungen aufweisen, und diejenigen identifizieren, die optimiert werden müssen.

  1. Indexfelder verwenden

Das MySQL-Protokoll für langsame Abfragen zeichnet alle Abfragen auf, bei denen der Index fehlgeschlagen ist. Mithilfe dieser Informationen können Sie ermitteln, welche Abfragen keine geeigneten Feldindizes verwenden, um die Abfrage zu beschleunigen. Durch das Hinzufügen von Indizes in MySQL kann die Abfrageleistung erheblich optimiert werden. Es ist wichtig zu beachten, dass das Hinzufügen zu vieler Indizes die Abfrageleistung beeinträchtigen kann, da dadurch die Kosten für Abfrageanforderungen und Aktualisierungsvorgänge steigen können.

  1. Abfrageanweisungen optimieren

Das Protokoll zur langsamen Abfrage kann Ihnen sagen, welche Abfragen optimiert werden müssen. Wenn die Ausführungszeit den eingestellten Schwellenwert überschreitet, wird die Abfrage in der Protokolldatei aufgezeichnet. Sie können die Abfrageanweisung überprüfen und versuchen, verschiedene Abfrageanweisungen zu verwenden, um die Ausführungsgeschwindigkeit zu optimieren.

  1. Verwendung des Caching-Mechanismus

Der Caching-Mechanismus kann die Abfragegeschwindigkeit erheblich verbessern. Wenn die Abfrageergebnisse bereits im Cache gespeichert sind, können Sie die Abfrageausführung und den Ressourcenaufwand vermeiden und die Ergebnisse direkt zurückgeben. Caching-Mechanismen können mithilfe von Cache-Anbietern wie Redis und Memcached implementiert werden.

  1. MySQL-Serverparameter anpassen

Die Leistung des MySQL-Servers kann durch Anpassen verschiedener Parameter optimiert werden, um die gesamte Datenbank zu optimieren. Zu diesen Parametern gehören die MySQL-Cache-Größe, das Verbindungslimit, das Abfrage-Timeout usw. Durch Anpassen dieser Parameter kann die Leistung des Datenbankdienstes für bestimmte Abfragen optimiert werden.

Das obige ist der detaillierte Inhalt vonSo aktivieren Sie das langsame MySQL-Abfrageprotokoll. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen