Aktivieren das langsame Abfrageprotokoll in MySQL
Heute werden wir die MySQL-Shell unter Windows und Ubuntu 20.04 verwenden, um slow_query_log
in MySQL zu aktivieren. Für dieses Tutorial verwenden wir MySQL Version 8.0 und Ubuntu 20.04.
das MySQL slow_query_log
Das MySQL slow_query_log
enthält SQL-Anweisungen, deren Ausführung mehr als long_query_time
Sekunden in Anspruch nimmt und mindestens min_examined_row_limit
Zeilen (Datensätze) benötigt, um untersucht zu werden.
Die SQL-Abfragen, die im MySQL slow_query_log
sichtbar werden, sind die Abfragen, deren Ausführung eine beträchtliche Zeit in Anspruch nimmt. Daher sind dies die Kandidaten, die optimiert werden müssen.
Standardmäßig ist das Protokoll für langsame Abfragen deaktiviert. Mal sehen, wie wir es unter Windows & Ubuntu 20.04 aktivieren können.
Aktivieren Sie MySQL slow_query_log
in Windows/Ubuntu
Die unten angegebenen Abfragen können auf Windows- und Ubuntu-Betriebssystemen ausgeführt werden. Wir müssen zuerst die MySQL-Shell aufrufen und dann den folgenden Befehl ausführen, um MySQL slow_query_log
zu aktivieren.
Beispielcode:
mysql> SET GLOBAL slow_query_log = 'ON';
Führen Sie nun die folgende Abfrage aus, um sicherzustellen, dass slow_query_log
aktiviert ist.
Beispielcode:
mysql> SHOW VARIABLES LIKE '%slow%';
AUSGANG:
+-----------------------------+--------------------------+
| Variable_name | Value |
+-----------------------------+--------------------------+
| log_slow_admin_statements | OFF |
| log_slow_extra | OFF |
| log_slow_replica_statements | OFF |
| log_slow_slave_statements | OFF |
| slow_launch_time | 2 |
| slow_query_log | ON |<====================
| slow_query_log_file | DESKTOP-QF52OT4-slow.log |
+-----------------------------+--------------------------+
7 rows in set (0.01 sec)
Alternativ können wir den Befehl auch wie folgt ausführen, um zu sehen, ob das slow_query_log
aktiviert ist oder nicht.
Beispielcode:
mysql> SHOW VARIABLES LIKE '%quer%';
AUSGANG:
+----------------------------------------+--------------------------+
| Variable_name | Value |
+----------------------------------------+--------------------------+
| binlog_rows_query_log_events | OFF |
| ft_query_expansion_limit | 20 |
| have_query_cache | NO |
| log_queries_not_using_indexes | OFF |
| log_throttle_queries_not_using_indexes | 0 |
| long_query_time | 10.000000 |
| query_alloc_block_size | 8192 |
| query_prealloc_size | 8192 |
| slow_query_log | ON |<=========
| slow_query_log_file | DESKTOP-QF52OT4-slow.log |
+----------------------------------------+--------------------------+
10 rows in set (0.00 sec)
Siehe die vorletzte Zeile in beiden Ausgaben (oben angegeben). Das slow_query_log
ist jetzt ON
.
Sobald wir slow_query_log
aktiviert haben, können wir auch andere Optionen aktivieren. Beispielsweise können wir auch die Zeit aktualisieren, die eine Abfrage benötigt, um ausgeführt zu werden, bevor sie protokolliert wird.
Beispielcode:
mysql> SET GLOBAL long_query_time = 20;