Wir versuchen, ein Deadlock-Problem in MySQL 5.0 zu diagnostizieren. Derzeit sind alle Tabellen MyISAM-Tabellen und daher sind alle Sperren Tabellensperren. Wir haben ein gutes table_locks_waited
bis table_locks_immediate
Verhältnis (kleiner als 1: 1000), aber innerhalb von ein paar Minuten haben wir ein paar Deadlocks bekommen. Dies geschieht nur auf Amazon EC2, jedoch nicht auf einem unserer anderen Server.
Gibt es eine Möglichkeit, alle Abfragen zu protokollieren, die nicht sofort eine Tabellensperre erhalten konnten? Wir möchten alle Abfragen sehen, die zur table_locks_waited
Nummer beigetragen haben .
mysql
amazon-ec2
logging
myisam
netvope
quelle
quelle
SHOW FULL PROCESSLIST
Ausgabe überprüft ? Schauen Sie sich auch die Probleme beim Sperren von Tabellen auf der MySQL-Website an.Antworten:
Im langsamen Protokoll wird unter anderem die Sperrzeit angezeigt
Hier ist ein Beispiel mit zwei protokollierten Abfragen
Bitte beachten Sie das Feld Lock_time :.
VORBEHALT
In MySQL 5.1+ wird das Feld in der Standardtabelle mysql.slow_log angezeigt
In beiden Fällen können Sie die Sperrzeit jeder Abfrage abrufen
quelle
Versuchen Sie, die Abfragen und Sperren in Echtzeit mit diesem Befehl zu überwachen:
Wenn die Sperrung längere Zeit erfolgt, sollten Sie eine gute Vorstellung davon bekommen, was los ist.
quelle