Vorteile der Verriegelung auf Tabellenebene


7

Welche Vorteile bietet das Sperren auf Tabellenebene, das von der MyISAM-Speicher-Engine verwendet wird?Das Sperren auf Zeilenebene bietet viele Vorteile, z. B. gleichzeitige Aktualisierungen und Lesevorgänge, die die Tabelle nicht sperren.

BearbeitenEs wird allgemein angenommen, dass das Sperren auf Tabellenebene Deadlocks verhindert.Aber wie lohnt es sich, Deadlocks auf Kosten der Nebenläufigkeit zu vermeiden?

  0

Diese Diskussion kann einige relevante Informationen für Sie enthalten. 14 sep. 112011-09-14 20:57:50

  0

In dieser Diskussion geht es um die Eigenschaften von MyISAM im Vergleich zu InnoDB. Die Vorteile des Sperrens auf Tabellenebene werden nicht behandelt. 14 sep. 112011-09-14 21:05:21

5

MyISAM hat kein Deadlocking, aber Deadlocking ist in gewisser Weise eine Verbesserung gegenüber dem Sperren auf Tabellenebene.

Wenn Sie versuchen, eine gesperrte Tabelle einzufügen/zu aktualisieren/zu löschen, müssen Sie warten, bis sie verfügbar ist oder eine Zeitüberschreitung auftritt (standardmäßig 28800 Sekunden).Mit Deadlocking auf einer Blockierungs-Engine auf Zeilenebene warten Sie ein wenig, wenn sie nicht frei ist, und wenn der Server eine Art "Endlosschleife" erkennt, bei der zwei Verbindungen eine Zeile nicht aufgeben, werden beide Verbindungen schnell und einfach zurückgewiesen einen Deadlock geben.

Wenn Sie versuchen, Deadlocking zu beheben, sollten Sie sich die folgenden Dinge ansehen:


3

Eine Tabellensperre (wie sie von MyISAM verwendet wird) ist ab deadlock Ausgaben deadlock kostenlos.

  0

Übrigens +1 für die erste Antwort bei Deadlocking !!! 14 sep. 112011-09-14 21:17:32


6

Da MySQL Abfragen für die Ausführung auf diese Weise plant:

  • Schreibanforderungen (wie UPDATEs und DELETEs) haben Vorrang vor Leseanforderungen (SELECTs)
  • Server führt FIFO-Schreibvorgänge aus (in der Reihenfolge, in der sie eingegangen sind)

Was sind die Vorteile ?

Deadlocks können mit MyISAM niemals auftreten.Der MySQL-Server kann somit alle Konflikte verwalten, explizit (LOCK TABLEs) oder implizit (Any DML).

Solange in einer MyISAM-Tabelle keine gelöschten oder aktualisierten Datensätze vorhanden sind, können gleichzeitige Einfügungen ungestraft erfolgen.Dies würde tatsächlich INSERTs für eine Tabelle einschließen, die eine explizite Lesesperre hat.

Wenn Sie für eine Tabelle mit Lücken OPTIMIZE TABLE ausführen, werden diese Lücken entfernt und gleichzeitige Einfügungen werden erneut zugelassen.

Weitere Informationen finden Sie unter "MySQL 5.0 Certification Study Guide" pages 408-412 Section 29.2 .

  0

Auf diese Weise kommt es niemals zu einem Deadlock, aber woher kommt der Vorteil im Vergleich zu den Nachteilen wie keine Nebenläufigkeit?Und bei hoher Last langsamer Durchsatz der Datenbank. 14 sep. 112011-09-14 21:10:03

+2

@rickjames der vorteil von myisam liegt nicht in der verwaltung von updates.Es ist am besten in einer nicht schreibintensiven Situation. 14 sep. 112011-09-14 21:13:01

  0

Unglücklicherweise verwenden viele Leute CMS von WordPress, Drupal und MoveableTypes, deren Standard immer MyISAM ist.Wenn jemand eine stark frequentierte Website hat, muss er sich von MyISAM entfernen.Ansonsten sollte MyISAM ausreichen. 14 sep. 112011-09-14 21:13:45

  0

@DTest richtig, aber auch in leseintensiven Systemen, wie vorteilhaft es im Vergleich zu Sperren auf Zeilenebene ist? 14 sep. 112011-09-14 21:14:38

  0

Selbst in einem schreibgeschützten System macht eine einzige DELETE- oder UPDATE-Anweisung die Vorteile von MyISAM schnell ungültig. 14 sep. 112011-09-14 21:16:59

  0

@rickjames Entfernen von Deadlocks ist der Vorteil der Tabellensperre gegenüber der Zeilensperre.MyISAM hat andere Vorteile gegenüber innodb, aber das ist keine Diskussion darüber (innodb hat viele Vorteile gegenüber myisam!) 14 sep. 112011-09-14 21:25:24

  0

Ich fürchte, das ist sehr typisch für MySQL in der Organisation.Der Grund, warum MyISAM Sperren auf Tabellenebene hat, ist einfach, dass sie keine Sperren auf Zeilenebene implementieren konnten (dies wurde einem Dritten überlassen, der uns InnoDB gegeben hat).Aber sie versuchen es zu drehen, als wollten sie es die ganze Zeit.Ich erinnere mich, dass sie früher sagten, Sie bräuchten keine Fremdschlüssel, Transaktionen, gespeicherte Prozesse usw. usw., als sie diese wirklich einfach nicht konnten.Nehmen Sie ihre Unterlagen mit einer ** GROSSEN ** Prise Salz. 15 sep. 112011-09-15 18:28:52


3

Zwei Vorteile.

ein.Das Sperren von Tabellen ist ein Beispiel für eine brute-force algorithm zur Lösung des Problems von Deadlocks.Brute Force funktioniert immer für geeignete Werte von "works".

Ken Thompson, Miterfinder von Unix, soll das Epigramm „Wenn Sie Zweifel haben, wenden Sie rohe Gewalt an“ ausgesprochen haben.Er hat dies wahrscheinlich nur als ernst gemeint, aber die Vorliebe des ursprünglichen Unix-Kernels für einfache, robuste und tragbare Algorithmen gegenüber spröden "intelligenten" scheint ein wesentlicher Faktor für den Erfolg dieses Betriebssystems gewesen zu sein.Wie so viele andere Kompromisse bei der Entwicklung von Software ist die Wahl zwischen Brute Force und komplexer, fein abgestimmter Klugheit oft schwierig und erfordert ein ausgeklügeltes technisches und ästhetisches Urteilsvermögen.

b.Sie werden zweifellos unterschiedliche Entscheidungen treffen, wenn Sie sowohl technisch versierte als auch ästhetische Entscheidungen treffen.Dies hat keinen Einfluss auf die Gültigkeit von "a" oben.