Was ist der Unterschied zwischen einer Sperre und einem Latch im Kontext des gleichzeitigen Zugriffs auf eine Datenbank?
Ich versuche zu verstehen, ein Papier, bei gleichzeitiger B-Baum, in dem der Autor erwähnt latch-vs-lock, und wie die Riegel brauchen nicht ein "Lock Manager". Ich habe versucht, herauszufinden, was sind die Unterschiede zwischen diesen beiden für zwei Tage.
Google ergibt:
"Schlösser versichern logische Konsistenz der Daten. Sie erfolgt über eine lock-Tabelle, die für eine lange Zeit (z.B. 2PL), und ein Teil der deadlock-detection-Mechanismus.
Riegel sind wie Semaphoren. Sie gewährleisten die physische Konsistenz der Daten und Ressourcen, die nicht sichtbar sind auf der transaktionalen Ebene"
Allerdings bin ich noch ziemlich verwirrt. Kann jemand dies erläutern? und was genau macht ein sperren-manager tun?
Vielen Dank im Voraus~
InformationsquelleAutor der Frage Viele | 2010-06-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Von CMU 15-721 (Frühjahr 2016), Vortrag 6-Präsentation, Folien 25 und 26, die cites - Eine Befragung von B-Tree-Locking-Techniken von Goetz Graefe:
Sperren
→ Schützt den index der logischen Inhalt von anderen txns.
→ Statt für txn Dauer.
→ Müssen in der Lage sein, ein rollback änderungen.
Riegel
→ Schützt den kritischen Bereichen des index interne Datenstruktur, die von anderen threads.
→ Statt für den Betrieb Dauer.
→ Nicht brauchen, um in der Lage sein, ein rollback änderungen.
InformationsquelleAutor der Antwort user454322
Es hängt wirklich von Ihrer DBMS, aber hier ist eine gute Erklärung für Oracle.
http://www.dba-oracle.com/t_lru_latches.htm
InformationsquelleAutor der Antwort Matt Rogish
Anderen Namen für Riegel ist der "spin-lock". Es ist einfach 'while-Schleife', bis bit auf null(abhängig von Implementierung). Die Ausführungs-thread ist niemals schlafen, wenn die Riegel, die heute nicht verfügbar. Keine Warteschlange. Nützlich für kurze Zeit, Speicher-Objekt zu sperren. Verschwenderisch, wenn statt für lange Dauer.
Sehen Spinlock Artikel
Sperren in der Regel die Unterstützung durch das system, und im Falle dass, wenn es besetzt ist dein thread wird schlafen, ohne verbraucht keine Prozessor-Ressourcen. Intern jedes Schloss hat eine Warteschlange enthält alle angehaltenen threads.
Der sperren-Manager-subsystem bereitstellen zu können, die Sie als spin-locks als heavyweigth sperren für die Unterstützung von Parallelität.
Sehen Artikel von Tom Kyte über die Riegel und Schlösser
InformationsquelleAutor der Antwort vim
Folgenden wird von SQL Server Punkt stehen.
Riegel sind Kurzfristige geringes Gewicht synchronisationsobjekte. Im Gegensatz Schlösser nicht halten, bis das gesamte logische Transaktion. Sie halten nur den Betrieb auf der
page
.Riegel verwendet werden, durch die der Motor für die Synchronisation mehrerer threads (zum Beispiel versucht, legen Sie auf einem Tisch). Die Riegel sind nicht für den Entwickler oder Anwendung - es ist für den Motor zu tun, ist es Aufgabe. Riegel sind die internen Kontroll-Mechanismus. In der Erwägung, dass die Schleusen sind für die Entwickler und die Anwendung zu Steuern. Die Riegel sind nur für die interne Speicher-Konsistenz. Sperren werden für die logische Konsistenz der Transaktionen.
Wartet, verursacht durch die Riegel sind sehr wichtig für die Diagnose von performance-Problemen. Werfen Sie einen Blick auf Diagnose und Behebung von Latch Konflikte auf SQL Server - Whitepaper. Die
PAGEIOLATCH_EX
ist ein wichtiger Typ Wartezeit.Referenzen
InformationsquelleAutor der Antwort Lijo
Der Unterschied zwischen Sperren und Latches:
"Referenz genommen von diesem blog.
Sperren sicherstellen, dass der gleiche Datensatz kann nicht geändert werden durch zwei verschiedene verbindungen und Verriegelungen sicherzustellen, dass der Datensatz befindet sich in einer geeigneten Daten-Seite für weitere lese-und Schreiboperation.
Schlösser bieten eine Konsistenz der logischen Transaktion und Riegel bieten eine Konsistenz des Speicherbereichs.
Des DBA Steuern und verwalten-Datenbank sperren, indem verschiedene Isolationsstufen und für die Riegel, DBA keine Regelung dar, weil es gelungen ist, die von der SQL-Server.
InformationsquelleAutor der Antwort Anvesh
Zitat aus OLTP-Through the Looking Glass, und Was Wir Dort Gefunden von Stonebraker et al.
Diese interpretation ordnet dann die Verriegelung mit Datenbank-Objekte z.B. Zeilen, in der Erwägung, dass die Riegel arbeiten bei der unteren Ebene der Datenstrukturen.
InformationsquelleAutor der Antwort Paul Carey