In meiner Prozessliste wird ein Prozess mit langer Laufzeit angezeigt. Es gibt keine Abfrage, nur den Befehl „Feldliste“ mit einer leeren Infospalte. Es hat fast 20 Minuten auf eine Tabellen-Metadatensperre für eine nicht angegebene Tabelle gewartet.
Das Googeln nach „MySQL-Befehlsfeldliste“ hat nichts Nützliches zurückgegeben. Kann mir jemand sagen, was dieser Befehl versucht zu tun und was könnte es verursacht haben?
Verwenden von MySQL 5.6.35 auf einer CentOS 6-Box
Kommentare
- Bitte lesen Sie meta.stackoverflow.com/a/285557/124486 und die akzeptierte Antwort
Antwort
Suchen Sie im PROCESSLIST
nach Zeilen mit einer höheren Zeit als dieser (1188). Es wahrscheinlich gibt den Bösewicht an. Der Besitzer beider Zeilen kann einen Hinweis geben.
Eine „Metadatensperre“ beinhaltet etwas anderes als einfache Abfragen – möglicherweise ALTER TABLE
oder LOCK TABLES
(wie bei mysqldump
) usw.
„Feldliste“ klingt wie das Durchsuchen von information_schema
nach den Spalten in der Tabelle, aber ich könnte mich irren.
Eine andere Möglichkeit besteht darin, dass eine offene Transaktion darauf wartet, COMMITted
. (Und es ist „zwischen“ Anweisungen, wenn die PROCESSLIST
erfasst wurde.)
SHOW OPEN TABLES;
könnte einen weiteren Hinweis geben.
Kommentare
- Sollte wahrscheinlich in die Frage aufgenommen haben, dass es der am längsten laufende Prozess ist. Der Teil information_schema ist jedoch sinnvoll,
- Ich habe einen weiteren Gedanken hinzugefügt – zu Transaktionen. Und
SHOW OPEN TABLES;