DBAtlas · Atlas für Datenbankbetrieb

1206: The total number of locks exceeds the lock table size

MySQL

Was bedeutet das?

InnoDB hat den für seine Sperren reservierten Speicher (die Lock-Strukturen im Buffer Pool) erschöpft. Tritt auf, wenn eine einzelne Transaktion zu viele Zeilen-/Gap-Locks ansammelt; die Transaktion wird zurückgerollt.

Ursache

Sehr große Einzeltransaktionen: UPDATE/DELETE von Millionen Zeilen auf einmal, eine WHERE-Klausel ohne Index, die die ganze Tabelle sperrt, oder ein für die Last zu kleines innodb_buffer_pool_size. Große Batch-Jobs sind der klassische Auslöser.

Lösung

Teile großes DML in kleine Batches auf (z. B. jeweils 10.000 Zeilen mit LIMIT in einer Schleife löschen/aktualisieren und nach jedem Batch COMMIT). Indiziere die WHERE-Spalten, um die Zahl gesperrter Zeilen zu senken. Erhöhe als dauerhafte Lösung innodb_buffer_pool_size (die Lock-Strukturen werden daraus allokiert). Vermeide unnötig lange Transaktionen.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank