MySQL zeichnet Abfragen auf, die die angegebene Zeit überschreiten. Wir bezeichnen SQL-Abfrageabfragen, die die angegebene Zeit überschreiten, als langsame Abfragen.
1. Überprüfen Sie das Zeitlimit
show variables like '%long%';
und Sie werden sehen:
+---------------------------------------------------+-----------+ | Variable_name | Value | +---------------------------------------------------+-----------+ | long_query_time | 10.000000 | | max_long_data_size | 1048576 | | performance_schema_events_waits_history_long_size | 10000 | +---------------------------------------------------+-----------+
Wenn eine Abfrage long_query_time überschreitet, wird sie als langsame Abfrage bezeichnet.
2. Überprüfen Sie die Startzeit der Datenbank
show status like 'uptime%';
und Sie werden
+---------------------------+-------+ | Variable_name | Value | +---------------------------+-------+ | Uptime | 76333 | | Uptime_since_flush_status | 76333 | +---------------------------+-------+
< sehen 🎜> 3. Überprüfen Sie die Anzahl der Abfrageanweisungen
show status like 'com_Select';
+---------------+-------+ | Variable_name | Value | +---------------+-------+ | Com_select | 1 | +---------------+-------+
4. Get die Anzahl der Verbindungen
show status like 'connections';
+---------------+-------+ | Variable_name | Value | +---------------+-------+ | Connections | 2 | +---------------+-------+
5. Stellen Sie die langsame Abfragezeit ein
set long_query_time = 1;
Protokoll langsamer Abfragen aktivieren
Fügen Sie die folgenden Parameter zur MySQL-Konfigurationsdatei hinzu
log-show-queries = D:/MySQL/Log/mysqld-slow-query. log
long-query-time = 5
log-queries-not-using-indexes
Erklärung:
Über den Speicherort der langsamen Abfrageprotokollfunktion: Die Verzeichnisdatei muss über Schreibberechtigungen verfügen. Sie können Einstellungen verwenden, das System gibt eine Standarddatei host_name-show.log an
long_query_time
SQL-Ausführungszeitschwellenwert, der Standardwert beträgt 10 Sekunden
Beachten Sie drei Punkte:
1. Nach dem Festlegen des long_query_time-Schwellenwerts zeichnet die MySQL-Datenbank alle SQL-Anweisungen auf, deren Laufzeit diesen Wert überschreitet, wird jedoch nicht aufgezeichnet, wenn die Laufzeit genau gleich long_query_time ist. Mit anderen Worten, im MySQL-Quellcode wird davon ausgegangen, dass er größer als log_query_time und nicht größer oder gleich ist.
2. Ab MySQL 5.1 wird long_query_time in Mikrosekunden berechnet und zeichnet so die Laufzeit von SQL genau auf.
3. Es wird empfohlen, dass die Zeit nicht zu klein oder zu groß ist, vorzugsweise zwischen 5 und 10 Sekunden. Natürlich können Sie entsprechend Ihrer eigenen Situation entscheiden.
log-queries-not-using-indexes
Wenn die laufende SQL-Anweisung keine Indizes verwendet, zeichnet die MySQL-Datenbank diese SQL-Anweisung auch in der Protokolldatei für langsame Abfragen auf.