Wo finde ich das langsame MySQL-Protokoll?

24

Wie der Titel schon sagt, wo kann ich es sehen?

Gibt es Konfigurationsoptionen dafür (wie viele ms würden bestimmen, ob eine Abfrage langsam ist oder nicht)?

Poelinca
quelle

Antworten:

22

Sie finden es abhängig von Ihrer Installation im Standardverzeichnis. Auf meinem Red Hat ist es zum Beispiel / var / log / mysql /

Die Abfragezeit ist die Zeit in Sekunden, in der die Aufzeichnung beginnen soll. Dies kann beim Start und zur Laufzeit erfolgen.

log-slow-queries = /var/log/mysql/mysql-slow.log

long_query_time = 1

David Hall
quelle
4
Auf meiner Site habe ich festgestellt, dass jemand log_slow_queries = ON gesetzt hat. Ich habe also eine Datei in meinem Datadir mit dem Namen ON, die das Protokoll enthält. Das war verwirrend ...
Gaius
6
Beachten Sie, dass log-slow-Abfragen ab 5.1.29 veraltet sind. Das danach zu verwendende ist Slow-Query-Log.
Riedsio
1
Beachten Sie außerdem, dass ab MySQL 5.1.21 eine Auflösung von Mikrosekunden beim Protokollieren in eine Datei unterstützt wird.
Riedsio
26

In MySQL: show global variables like '%slow%';

Update: Hier ist ein Link zum Handbuch: Link-Text

SteveHarville
quelle
1
Können Sie für eine kurze Antwort wie diese auf das Handbuch verlinken?
Brian Ballsun-Stanton
7

Dies sind die relevanten Optionen (und Einstellungen), die ich im Allgemeinen in allen meinen my.cnfs verwende, um langsame Abfragen zu protokollieren:

log_output=FILE
slow_query_log=1
slow_query_log_file=/var/log/mysql/mysql.slow 
long_query_time=0.001 
log-queries-not-using-indexes=0

Beachten Sie, dass für long_query_time ,

Ab MySQL 5.1.21 ... wird beim Protokollieren in eine Datei eine Auflösung von Mikrosekunden unterstützt.

Riedsio
quelle
3

Durchsuchen Sie Ihre mysqld-Konfigurationsdatei (normalerweise /etc/my.cnf)

An deiner Muschel:

grep slow /etc/my.cnf
randomx
quelle
2

Hier ist auch etwas zu beachten:

Wenn Sie die Option verwenden

log-output=TABLE

Suchen Sie in der Datei /etc/my.cnf nach dem langsamen Protokoll, das eine CSV-Speicher-Engine-basierte Tabelle ist, die sich ausgerechnet im mysql-Schema befindet.

Dies wirkt sich auch auf das allgemeine Protokoll aus, sobald Sie es aktivieren.

RolandoMySQLDBA
quelle