Tabellenebene-Sperren in MySQL können die Leistung von Geschäftssystemen erheblich beeinträchtigen, insbesondere bei großen Datenmengen. Wenn eine ALTER-TABLE-Operation ausgeführt wird, sperrt MySQL die Tabelle standardmäßig, blockiert andere Transaktionen, bis die Operation abgeschlossen ist. Dies kann zu Abfrageverzögerungen, blockierten Schreiboperationen und Systemverlangschnungen führen. Es gibt jedoch in neueren Versionen von MySQL Ausnahmen. Beispielsweise kann das Hinzufügen einer Spalte zu einer Tabelle mit dem InnoDB-Speicher-Engine in MySQL 5.6 und höher nicht zwangsläufig die Tabelle sperren. MySQL 5.6 führte Online-DDL-Operationen ein, die bestimmte Tabellenmodifikationen ohne Sperre der Tabelle ermöglichen. In MySQL 5.6 ist das Hinzufügen einer Spalte eine Online-Operation, die ALGORITHM=INPLACE verwenden kann, um eine vollständige Sperre der Tabelle zu vermeiden. MySQL 8.0 optimierte Online-DDL-Operationen weiter, sodass die meisten ALTER-TABLE-Operationen ohne Sperre der Tabelle durchgeführt werden können. MySQL 8.0 führt Funktionen wie Atomare DDL, Instant-Metadaten-Updates und inkrementelle Metadaten-Updates ein, um die Sperrezeit der Tabelle zu reduzieren und die gleichzeitige Leistung zu verbessern. Trotz dieser Optimierungen wird empfohlen, ALTER-TABLE-Operationen während der Nebenstunden durchzuführen, um den Einfluss auf Anwendungen zu minimieren.
dev.to
Schema Changes in MySQL: Will Your Table Be Locked?
Create attached notes ...
