Welche Vorteile bietet das Sperren auf Tabellenebene, das von der MyISAM-Speicher-Engine verwendet wird? Das Sperren auf Zeilenebene bietet viele Vorteile wie gleichzeitige Aktualisierungen und Lesevorgänge, bei denen die Tabelle nicht gesperrt wird.
Bearbeiten Es wird allgemein angenommen, dass das Sperren auf Tabellenebene Deadlocks verhindert. Aber wie lohnt es sich, Deadlocks auf Kosten der Parallelität zu verhindern?
Antworten:
MyISAM verfügt nicht über Deadlocks, aber Deadlocks sind in gewisser Weise eine Verbesserung gegenüber Sperren auf Tabellenebene.
Wenn Sie versuchen, aus einer gesperrten Tabelle EINFÜGEN / AKTUALISIEREN / LÖSCHEN, müssen Sie warten, bis sie verfügbar ist oder bis eine Zeitüberschreitung auftritt (standardmäßig 28800 Sekunden). Wenn Sie eine Sperren-Engine auf Zeilenebene blockieren, warten Sie etwas, wenn sie nicht frei ist und wenn der Server eine Art "Endlosschleife" erkennt - bei der 2 Verbindungen keine Zeile aufgeben -, werden beide Verbindungen schnell und schnell abgelehnt einen Deadlock geben.
Wenn Sie versuchen, Deadlocks zu beheben, würde ich vorschlagen, dass Sie sich die folgenden Dinge ansehen:
quelle
Da MySQL Abfragen für die Ausführung auf folgende Weise plant:
Was sind die Vorteile ?
Deadlocks können mit MyISAM niemals auftreten. Der MySQL-Server kann somit alle Konflikte verwalten, explizite (LOCK TABLEs) oder implizite (beliebige DML).
Solange eine MyISAM-Tabelle keine gelöschten oder aktualisierten Datensätze enthält, können gleichzeitige Einfügungen ungestraft erfolgen. Dies würde in der Tat INSERTs für eine Tabelle mit einer expliziten Lesesperre einschließen.
Für jede Tabelle mit Lücken würde das Ausführen von OPTIMIZE TABLE diese Lücken entfernen und wieder gleichzeitige Einfügungen ermöglichen.
Weitere Informationen finden Sie im Abschnitt "MySQL 5.0-Zertifizierungsstudienhandbuch" auf den Seiten 408-412, Abschnitt 29.2 .
quelle
Eine Tabellensperre (wie sie von MyISAM verwendet wird) ist frei von Deadlock- Problemen.
quelle
Zwei Vorteile.
ein. Das Sperren von Tabellen ist ein Beispiel für einen Brute-Force-Algorithmus zur Lösung des Problems von Deadlocks. Brute Force funktioniert immer, für geeignete Werte von "funktioniert".
b. Sie werden zweifellos unterschiedliche Entscheidungen treffen, wenn Sie sowohl technisch versiertes als auch ästhetisches Urteilsvermögen erlangen. Dies hat keinen Einfluss auf die Gültigkeit von "a" oben.
quelle