Heim  >  Artikel  >  Datenbank  >  Ausführliche Erläuterung zweier Möglichkeiten zur Optimierung und Positionierung von niedrigerem SQL

Ausführliche Erläuterung zweier Möglichkeiten zur Optimierung und Positionierung von niedrigerem SQL

伊谢尔伦
伊谢尔伦Original
2017-06-28 14:03:411234Durchsuche

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

Konfigurationsdatei

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;

Abfrage OK, 0 Zeilen betroffen (0,02 Sek.)


(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:

Die zweite Abfrage wird nicht im Protokoll für langsame Abfragen angezeigt weil die Abfragezeit länger als 5 Sekunden ist. Sollte im langsamen Abfrageprotokoll erscheinen:
mysql> select count(*) from order2008;
+----------+
| count(*) |
+----------+
| 208 |
+----------+
1 row in set (0.00 sec)

(4) Überprüfen Sie das langsame Abfrageprotokoll.
mysql> select count(*) from t_user;
+----------+
| count(*) |
+----------+
| 6552961 |
+----------+
1 row in set (11.07 sec)

Aus dem obigen Protokoll können Sie ersehen, dass die Abfragezeit von SQL 5 Sekunden überschreitet, während die Abfragezeit von weniger als 5 Sekunden in diesem Protokoll nicht erscheint.
[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;
Wenn das langsame Abfrageprotokoll viele Datensätze enthält, können Sie das Tool mysqldumpslow (im Lieferumfang der MySQL-Client-

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:

stimmt vollständig mit dem SQL-Text überein. Mit Ausnahme der
[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;
Variablen

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!

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