Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Aktivieren Sie die Protokollierung langsamer Abfragen (Slow Query Log) in der MySQL-Datenbank

Eine der Hauptanforderungen an einen schnellen Webserver sind effiziente und effektive SQL-Anweisungen oder optimierte Abfragen. Alle nicht optimalen SQL (Structured Query Language)-Befehle oder -Anweisungen, deren Ausführung zu lange oder zu lange dauert, verbrauchen eine Menge Systemressourcen, was dazu führt, dass die MySQL-Datenbank langsamer läuft und sich immer mehr Abfragerückstände ansammeln, und wann Verbindungslimit erreicht ist, Besuchern die Verbindung verweigert oder verweigert wird. Im schlimmsten Fall fällt auch Ihr Webserver aus oder ist dauerhaft unterfordert. Dies trifft insbesondere zu, wenn Sie den MyISAM-Tabellentyp verwenden, der auf einer stark frequentierten Website Sperren auf Tabellenebene anstelle von Sperren auf Zeilenebene verwendet.

Manchmal kann eine einzelne SQL-Abfrage die Ursache für alle Probleme des Servers sein. MySQL verfügt über eine integrierte Funktion zum Erfassen eines langsamen Abfrageprotokolls oder zum Identifizieren von Abfragen, die nicht optimal sind und lange dauern, bis sie abgeschlossen sind. Dadurch können Sie alle langsam laufenden Abfragen protokollieren, deren Ausführung durch die MySQL-Datenbank-Engine eine bestimmte Anzahl von Sekunden in Anspruch genommen hat Datei. Das Protokoll für langsame Abfragen ist nicht aktiviert oder standardmäßig bei der MySQL-Installation aktiviert, daher ist es eines der weniger verwendeten Protokolle.

Um das langsame Abfrageprotokoll zu aktivieren, fügen Sie einfach die folgende Zeile zur MySQL-Konfigurationsdatei (my.cnf oder my.ini) hinzu und starten Sie dann den MySQL-Server neu:

log-slow-queries

Oder,

log-slow-queries = [path to the log file]

Ersetzen Sie [Pfad zur Protokolldatei] mit dem tatsächlichen Pfad zur Protokolldatei für langsame Abfragen, in die MySQL das Protokoll schreiben soll, was der optionale Wert ist.

Oder Sie starten mysqld mit –log-slow-queries[=file_name] Option zum Aktivieren des Protokolls für langsame Abfragen. Wenn in beiden Syntaxen kein Protokolldateiname angegeben ist, lautet der Standardname host_name -slow.log, gespeichert im MySQL-Datendateiverzeichnis. Wird ein Dateiname angegeben, aber nicht als absoluter Pfadname, schreibt der Server die Datei auch in das Datenverzeichnis.

Nach dem Aktivieren des langsamen Abfrageprotokolls erstellt, erfasst und protokolliert MySQL die Protokolldatei mit allen SQL-Anweisungen, die länger als long_query_time gedauert haben Sekunden für die Ausführung, die standardmäßig auf 10 Sekunden eingestellt ist . Die Zeit zum Erwerb der anfänglichen Tabellensperren wird nicht als Ausführungszeit gezählt. mysqld schreibt eine Anweisung in das Protokoll für langsame Abfragen, nachdem es ausgeführt wurde und nachdem alle Sperren aufgehoben wurden, sodass die Protokollreihenfolge möglicherweise von der Ausführungsreihenfolge abweicht.

Sie können dann alle langsamen SQL-Abfragen in der Protokolldatei untersuchen und dann die erforderlichen Schritte zur Optimierung der SQL-Anweisungen unternehmen. Das Protokoll für langsame Abfragen informiert Sie darüber, wann die Abfrage abgeschlossen war, wie lange die Ausführung der Abfrage gedauert hat, wie lange es gedauert hat, ihre Sperren zu sichern, wie viele Zeilen als Ergebnis zurückgesendet wurden, wie viele Zeilen untersucht wurden, um die Ergebnis, welche Datenbank verwendet wurde und die eigentliche Abfrage selbst. Beachten Sie jedoch, dass eine im Protokoll enthaltene SQL-Abfrage möglicherweise bereits optimal, aber langsam ausgeführt wurde, da die Systemressourcen durch die eigentliche langsame Anweisung verbraucht wurden, die fein abgestimmt werden muss.