Vorwort Ich glaube, dass jeder in seiner täglichen Arbeit Erfahrungen mit SQL-Optimierung hat. Daher müssen Sie vor der Optimierung das langsame SQL finden und analysieren. In diesem Artikel wird beschrieben, wie Sie langsame Abfragen finden. Das Protokoll langsamer Abfragen ist eine integrierte Funktion von MySQL, die SQL-Anweisungen aufzeichnet, deren Ausführung länger als eine angegebene Zeit dauert. Im Folgenden sind die Parameter aufgeführt, die sich auf langsame Abfragen beziehen. Bei Interesse können Sie einen Blick darauf werfen:
Langsame Abfrage aktivieren Es gibt zwei Möglichkeiten, langsame Abfragen zu aktivieren
Methode 1 erfordert die Änderung der Konfigurationsdatei my.ini und das Hinzufügen der folgenden Parameter zum Abschnitt [mysqld]: [mysqld] log_output='DATEI,TABELLE' slow_query_log='EIN' lange_Abfragezeit=0,001 Dann müssen Sie MySQL neu starten, damit die Änderungen wirksam werden. Der Befehl lautet Methode 2 kann ohne Neustart wirksam werden, aber ein Neustart führt dazu, dass die Einstellungen ungültig werden. Die Einstellungsbefehle lauten wie folgt: Setzen Sie GLOBAL slow_query_log = "Ein"; SET GLOBAL log_output = 'DATEI, TABELLE'; SETZEN SIE GLOBAL lange Abfragezeit = 0,001; Auf diese Weise kann das Protokoll langsamer Abfragen sowohl in der Datei als auch in der Tabelle mysql.slow_log aufgezeichnet werden. Verwenden Sie die zweite Methode, um das langsame Abfrageprotokoll zu aktivieren, und verwenden Sie dann die vollständige Tabellenabfrageanweisung Fragen Sie dann das langsame Abfrageprotokoll ab:
Dabei ist start_time die Ausführungszeit, user_host der Hostname des Benutzers, query_time die für die Abfrage aufgewendete Zeit, lock_time die Zeit, in der die Abfrage die Sperre verwendet, rows_sent die Datenmenge, die von dieser Abfrage an den Client zurückgegeben wird, rows_examined gibt an, wie viele Zeilen diese Anweisung gescannt hat, db ist die Datenbank, sql_text ist dieses SQL und thread_id ist die Thread-ID, die diese Abfrage ausführt. Auf diese Weise können wir die Daten in der slow_log-Tabelle analysieren und dann das SQL optimieren. Oben ist eine Analyse anhand einer Tabelle. Das Folgende ist eine Analyse langsamer Abfragen anhand von Dateien. Wenn Sie nicht wissen, wo die Datei gespeichert ist, können Sie mit
mysqldumpslow MySQL verfügt über ein integriertes Tool namens mysqldumpslow, das uns bei der Analyse langsamer Abfrageprotokolldateien hilft. Um dieses Tool in einer Windows-Umgebung verwenden zu können, müssen Sie die Perl-Umgebung installieren. Sie können die Befehlsparameter über -help anzeigen:
Beispielsweise können wir
pt-Abfrage-Digest Darüber hinaus gibt es pt-query-digest, eines der Tools im Percona Toolkit. Die Download-Adresse lautet: https://www.percona.com/downloads/percona-toolkit/LATEST/. Wenn es sich um ein Windows-System handelt, können Sie das Skript in der Umgebung herunterladen, in der Perl installiert ist: https://raw.githubusercontent.com/percona/percona-toolkit/3.x/bin/pt-query-digest Nachfolgend finden Sie eine kurze Einführung in pt-query-digest: pt-query-digest ist ein Drittanbietertool zur Analyse langsamer MySQL-Abfragen. Es kann Binlog, allgemeines Log und Slowlog analysieren. Es kann auch MySQL-Protokolldaten analysieren, die von showprocesslist oder tcpdump erfasst wurden. Die Analyseergebnisse können in eine Datei ausgegeben werden. Der Analyseprozess besteht darin, zuerst die Bedingungen der Abfrageanweisung zu parametrisieren und dann die parametrisierten Abfragen zu gruppieren und zu zählen. Die Ausführungszeit, die Anzahl, der Anteil usw. jeder Abfrage werden gezählt. Die Analyseergebnisse können verwendet werden, um Probleme zu finden und sie zu optimieren. Wenn Sie interessiert sind, können Sie es herunterladen und selbst damit spielen. Das Tool pt-query-digest wird in nachfolgenden Artikeln ausführlich vorgestellt. Prozessliste anzeigen Es gibt auch eine Situation, in der die langsame Abfrage noch ausgeführt wird, das langsame SQL jedoch nicht im langsamen Abfrageprotokoll gefunden werden kann. In diesem Fall können Sie den Befehl „show processlist“ verwenden, um die langsame Abfrage zu finden. Dieser Befehl kann die laufenden Threads anzeigen. Das Ausführungsergebnis ist in der folgenden Abbildung dargestellt. Anhand der Zeitgröße können Sie feststellen, ob es sich um eine langsame Abfrage handelt.
Zusammenfassen In diesem Artikel wird hauptsächlich erläutert, wie langsame Abfragen lokalisiert werden, und es werden kurz die Tools mysqldumpslow und pt-query-digest vorgestellt. Gängige Methoden wie „explain“, „show profile“ und „trace“ werden später ebenfalls erläutert. Welche Methoden verwenden Sie zum Auffinden langsamer Abfragen oder zur Optimierung von SQL? Dies ist das Ende dieses Artikels zum Auffinden langsamer MySQL-Abfragen. Weitere Informationen zum Auffinden langsamer MySQL-Abfragen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Referenzdokumentation https://dev.mysql.com/doc/refman/5.7/en/slow-query-log.html Das könnte Sie auch interessieren:
|
<<: HTML erstellt eine einfache und schöne Anmeldeseite
>>: Detaillierte Erläuterung der Verwendung von Object.create-Instanzen in js
Der Befehl „top“ ist der beste Befehl, den jeder ...
Technische Struktur Das Projekt ist in zwei Teile...
<br />Der Inhalt wurde aus dem Internet repr...
Inhaltsverzeichnis Konfigurieren Sie node.js+nvm+...
Verwendung der Zeitdifferenzfunktionen TIMESTAMPD...
Wie finde ich langsame SQL-Anweisungen in MySQL? ...
Wenn hier ein <input type="image">...
01. Befehlsübersicht Der Befehl whatis sucht in e...
In diesem Artikel wird der spezifische JavaScript...
Die Master-Slave-Synchronisierung, auch Master-Sl...
Inhaltsverzeichnis Wirkung Beginnen Sie mit der T...
Lassen Sie mich Ihnen nun eine Frage stellen. Was...
Der Meta-Tag ist ein Hilfstag im Head-Bereich der...
Heute habe ich einen dynamischen Fensterstil für d...
Gemeinsame Eigenschaften von Tabellen Die grundle...