Um die Abfragegeschwindigkeit und -effizienz im täglichen Gebrauch der MySQL-Datenbank zu verbessern, verwenden wir normalerweise Indizes und Optimierer. Aber manchmal müssen wir auch die spezifische Ausführung der Abfrageanweisung kennen, um das Problem besser zu finden und die Datenbank genauer zu optimieren. Zu diesem Zeitpunkt müssen Sie die Slow Query Log-Funktion von MySQL verwenden.
Das langsame Abfrageprotokoll kann alle SQL-Anweisungen aufzeichnen, deren Ausführungszeit einen bestimmten Schwellenwert überschreitet, damit wir Fehler beheben und optimieren können. In diesem Artikel wird erläutert, wie Sie das langsame Abfrageprotokoll in der MySQL-Datenbank aktivieren, und die relevanten Parameter und Optimierungsmethoden des langsamen Abfrageprotokolls werden ausführlich erläutert.
1. Langsames Abfrageprotokoll aktivieren
In der MySQL-Konfigurationsdatei my.cnf oder Fügen Sie die folgende Konfiguration zu my.ini hinzu:
slow_query_log = 1 #开启慢查询日志 slow_query_log_file = /var/log/mysql/mysql-slow.log #日志文件路径 long_query_time = 3 #超过3s即为慢查询 log_queries_not_using_indexes = 1 #记录未使用索引的查询
wobei slow_query_log = 1 das Einschalten des langsamen Abfrageprotokolls bedeutet, slow_query_log_file den Pfad und Namen der langsamen Abfrageprotokolldatei angibt, long_query_time bedeutet, wie viele Sekunden die Die Ausführungszeit der Abfrage ist überschritten, bevor sie berücksichtigt wird. Es handelt sich um eine langsame Abfrage. log_queries_not_using_indexes gibt an, ob Abfragen aufgezeichnet werden sollen, die keine Indizes verwenden.
Zusätzlich zur Änderung der Konfigurationsdatei können wir auch Parameter über SET dynamisch ändern Befehl. Beispielsweise können wir das langsame Abfrageprotokoll in der MySQL-Befehlszeile mit der folgenden Anweisung aktivieren:
mysql> SET global slow_query_log = 1; mysql> SET global slow_query_log_file = '/var/log/mysql/mysql-slow.log'; mysql> SET global long_query_time = 3; mysql> SET global log_queries_not_using_indexes = 1;
Im obigen Code bedeutet SET global, dass es global wirksam wird, also für alle Verbindungen wird diese Parameter verwenden.
Wenn Sie nur die Parameter einer lokalen Verbindung festlegen möchten, können Sie natürlich den Befehl SET SESSION verwenden. Zum Beispiel:
mysql> SET SESSION slow_query_log = 1; mysql> SET SESSION slow_query_log_file = '/var/log/mysql/mysql-slow.log'; mysql> SET SESSION long_query_time = 3; mysql> SET SESSION log_queries_not_using_indexes = 1;
2. Optimieren Sie die Konfigurationsparameter des langsamen Abfrageprotokolls
Bevor Sie das einschalten Bei einer langsamen Protokollabfrage müssen wir sicherstellen, dass das Verzeichnis, in dem sich die angegebene Protokolldatei befindet, bereits vorhanden ist und über Schreibberechtigungen verfügt. Wenn das Verzeichnis nicht existiert, müssen Sie es zuerst erstellen.
Mit dem folgenden Befehl können wir das aktuelle Arbeitsverzeichnis des MySQL-Prozesses anzeigen:
mysql> SHOW VARIABLES LIKE 'datadir'; +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | datadir | /var/lib/mysql/ | +---------------+-----------------+ 1 row in set (0.00 sec)
Wie Sie dem obigen Beispiel entnehmen können, ist das Arbeitsverzeichnis des MySQL-Prozesses ist /var/lib/mysql/, und im Protokollverzeichnis dieses Verzeichnisses befindet sich eine slow.log-Datei. Wenn wir also das langsame Abfrageprotokoll in diese Datei schreiben möchten, müssen wir nur die folgende Konfiguration zu my.cnf hinzufügen:
slow_query_log_file = /var/lib/mysql/logs/slow.log
mysql> SHOW VARIABLES LIKE 'slow_query_log_file'; +---------------------+------------------------+ | Variable_name | Value | +---------------------+------------------------+ | slow_query_log_file | /var/lib/mysql/slow.log | +---------------------+------------------------+ 1 row in set (0.00 sec)
mysql> mysqldumpslow -s t /var/lib/mysql/slow.log
Das obige ist der detaillierte Inhalt vonSo aktivieren Sie das langsame Abfrageprotokoll in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!