Suchen Sie SQL-Anweisungen mit geringer Ausführungseffizienz durch langsame Abfrage--Protokolle. Wenn Sie mit der Option --log-slow-queries[=file_name] beginnen, schreibt mysqld ein Protokoll, das alle Ausführungszeiten enthält, die long_query_time überschreiten Sekunden. Durch Anzeigen dieser Protokolldatei können Sie SQL-Anweisungen mit geringer Ausführungseffizienz finden. Zur Optimierung der MySQL-Effizienz können Sie SQL-Anweisungen mit geringer Ausführungseffizienz im Allgemeinen auf die folgenden zwei Arten finden.
Suchen Sie SQL-Anweisungen mit geringer Ausführungseffizienz durch langsame Abfrageprotokolle. Wenn Sie mit der Option --log-slow-queries[=Dateiname] beginnen, schreibt mysqld eine Liste mit allen SQL-Anweisungen, deren Ausführungszeit long_query_time Sekunden überschreitet . Protokolldatei: Suchen Sie das weniger effiziente SQL, indem Sie diese Protokolldatei anzeigen.
Das Protokoll der langsamen Abfrage wird aufgezeichnet, nachdem die Abfrage abgeschlossen ist. Wenn die Anwendung Probleme mit der Ausführungseffizienz aufweist, kann das Problem daher durch Abfragen des Protokolls der langsamen Abfrage nicht gefunden werden Threads, einschließlich Thread-Status, ob die Tabelle gesperrt werden soll usw., können Sie den Ausführungsstatus von SQL in Echtzeit überprüfen und gleichzeitig einige Tabellensperrvorgänge optimieren.
Lassen Sie uns unten ein Beispiel geben, um zu veranschaulichen, wie SQL-Anweisungen mit geringer Ausführungseffizienz durch langsame Abfrageprotokolle gefunden werden:
Langsame Abfrageprotokolle aktivieren, Konfigurationsbeispiel:
log -slow-queries
Fügen Sie die oben genannten Konfigurationselemente zur my.cnf
hinzu und starten Sie den MySQL-Dienst neu. Dann wird die langsame MySQL-Abfragefunktion wirksam. Das langsame Abfrageprotokoll wird in den durch den Parameter DATADIR (Datenverzeichnis) angegebenen Pfad geschrieben. Der Standarddateiname lautet host_name-slow.log.
Wie Fehlerprotokolle und Abfrageprotokolle ist auch das Format langsamer Abfrageprotokolldatensätze Klartext und kann direkt gelesen werden. Das folgende Beispiel demonstriert den Einstellungs- und Lesevorgang des Protokolls für langsame Abfragen.
(1) Fragen Sie zuerst den Wert von long_query_time ab.
(2) Um das Testen zu erleichtern, wird die langsame Abfragezeit auf 5 Sekunden geändert.mysql> show variables like 'long%'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | long_query_time | 10 | +-----------------+-------+ 1 row in set (0.00 sec)
mysql> set long_query_time=5;
(3) Führen Sie die folgenden zwei Abfrageanweisungen nacheinander aus.
Die erste Abfrage wird nicht im Protokoll für langsame Abfragen angezeigt, da die Abfragezeit weniger als 5 Sekunden beträgt:
mysql> select count(*) from order2008; +----------+ | count(*) | +----------+ | 208 | +----------+ 1 row in set (0.00 sec)
mysql> select count(*) from t_user; +----------+ | count(*) | +----------+ | 6552961 | +----------+ 1 row in set (11.07 sec)
[root@localhost mysql]# more localhost-slow.log # Time: 081026 19:46:34 # User@Host: root[root] @ localhost [] # Query_time: 11 Lock_time: 0 Rows_sent: 1 Rows_examined: 6552961 select count(*) from t_user;
Installation
enthalten) verwenden, um das langsame Abfrageprotokoll zu klassifizieren und zusammenzufassen. Im folgenden Beispiel wird die Protokolldatei mysql_master-slow.log klassifiziert und zusammengefasst, und nur die zusammengefassten Zusammenfassung-Ergebnisse werden angezeigt:
[root@mysql_master mysql_data]# mysqldumpslow mysql_master-slow.log Reading mysql slow query log from mysql_master-slow.log Count: 2 Time=11.00s (22s) Lock=0.00s (0s) Rows=1.0 (2), root[root]@mysql_master select count(N) from t_user;
behandelt Mysqldumpslow verschiedene Anweisungen für Statistiken automatisch als dieselbe Anweisung und der Variablenwert wird durch N ersetzt. Dieses statistische Ergebnis wird die Effizienz des Benutzers beim Lesen langsamer Abfrageprotokolle erheblich steigern und den SQL-Engpass des Systems schnell lokalisieren. Hinweis: Das langsame Abfrageprotokoll ist für uns sehr hilfreich, um SQL mit Leistungsproblemen in der Anwendung zu finden. Unter normalen Umständen wird empfohlen, dieses Protokoll zu öffnen und die Analyse regelmäßig zu überprüfen.
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung zweier Möglichkeiten zur Optimierung und Positionierung von niedrigerem SQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!