Stellen Sie in MySQL das Wartezeitlimit für Sperren ein

13

Wo würde ich die maximale Zeit einstellen, die eine Abfrage auf eine Sperre in MySQL 5.0.68 wartet, bevor eine Zeitüberschreitung eintritt?

Gaius
quelle

Antworten:

6

Andere allgemeine Timeout-Einstellungen (nicht nur für Sperren, da innodb_lock_wait_timeout nur für InnoDB-Zeilensperren gilt) sind wait_timeout und interactive_timeout (beide standardmäßig 28.800).

Derek Downey
quelle
8

Standardmäßig sind es 50 Sekunden

Gerade gesetzt innodb_lock_wait_timeout nach Bedarf.

RolandoMySQLDBA
quelle
1

Wenn Sie das InnoDB-Timeout von 50 Sekunden erreichen, haben Sie eine schlecht gestaltete Anwendung!

Diese Zeitüberschreitung gibt es, um ungezogene Dinge zu fangen, die auf keine andere Weise gefangen werden können.

Rick James
quelle
1
Oder aufgrund von Fehlern habe ich einen extrem ausgelasteten MySQL- und MariadB-Server und Deadlocks sind eine normale Sache, die nicht immer vorkommt. Auch wenn "unmöglich". Wenn Sie hundert Millionen Zeilen und Zehntausende von SQL-Befehlen pro Sekunde haben, finden Sie alle Arten von Fehlern in MySQL (Abstürze) sowie Deadlocks verschiedener Art.
John
1
Es hängt von der Situation ab. In den mysql-Dokumenten: Sie können diesen Wert für stark interaktive Anwendungen oder OLTP-Systeme verringern, um Benutzerfeedback schnell anzuzeigen oder das Update zur späteren Verarbeitung in eine Warteschlange zu stellen. Sie können diesen Wert für Back-End-Vorgänge mit langer Laufzeit erhöhen, z. B. für einen Transformationsschritt in einem Data Warehouse, der darauf wartet, dass andere umfangreiche Einfüge- oder Aktualisierungsvorgänge abgeschlossen werden.
g4b0
Überprüfen Sie, ob die Anwendung schlecht erstellt wurde ... yep!
Noah Duncan