2010-06-24 26 views
19

Ich versuche ein Papier auf gleichzeitige B-Baum zu verstehen, in dem der Autor Latch vs Sperre erwähnt, und wie Latches keinen "Lock Manager" benötigen. Ich habe zwei Tage lang versucht, herauszufinden, welche Unterschiede zwischen diesen beiden bestehen.Was ist der Unterschied zwischen einer Sperre und einem Latch im Kontext des gleichzeitigen Zugriffs auf eine Datenbank?

Google ergibt:..

„Sperren logische Konsistenz der Daten sicherzustellen, werden sie über eine Sperrtabelle implementiert, für eine lange Zeit gehalten (zB 2PL), und ein Teil des Deadlock-Erkennungsmechanismus

Latches sind wie Semaphore und gewährleisten die physische Konsistenz von Daten und Ressourcen, die auf Transaktionsebene nicht sichtbar sind. "

Allerdings bin ich immer noch ziemlich verwirrt. Kann jemand darüber etwas ausarbeiten? und was genau macht ein Sperrmanager?

Vielen Dank im Voraus ~

Antwort

10

Es hängt wirklich von Ihrem DBMS, aber hier ist eine gute Erklärung für Oracle.

http://www.dba-oracle.com/t_lru_latches.htm

Latches sind wie Schleusen für RAM-Speicher Strukturen gleichzeitig Zugriff zu verhindern und serielle Ausführung von Kernel-Code zu gewährleisten. Die LRU-Latchspeicher (zuletzt verwendet ) werden verwendet, wenn ein Puffer hinzugefügt oder aus dem Pufferspeicher entfernt wird, eine Aktion, die nur von einem Prozess zu einem Zeitpunkt durchgeführt werden kann.

3

Andere Namen für Verriegelungen ist "Spin Lock". Es ist einfach 'while loop', bis das Bit Null ist (abhängig von der Implementierung). Der Ausführungsthread wird niemals in den Ruhezustand versetzt, wenn die Verriegelung momentan nicht verfügbar ist. Keine Warteschlange Nützlich für das Sperren von Kurzzeit-Speicherobjekten. Bei längerer Lagerung verschwenderisch. Siehe Spinlock article

Locks normalerweise Unterstützung durch das System und im Falle, wenn es Ihren Thread beschäftigt schlafen wird ohne Prozessor Ressourcen zu verbrauchen. Intern hat jede Sperre eine Warteschlange, die alle unterbrochenen Threads enthält.

Der Sperren-Manager ist ein Subsystem, das Ihnen Spin-Locks als Schwergewichts-Locks für die Unterstützung von Nebenläufigkeit bereitstellen kann.

Siehe article von Tom Kyte über Verriegelungen und Schlösser

+1

Siehe auch http://stackoverflow.com/questions/1957398/what-exactly-are-spin-locks – vim

1

Es folgt aus SQL Server Standpunkt.

Verriegelungen sind kurzfristige, leichte Synchronisationsobjekte. Im Gegensatz zu Locks halten Latches nicht bis zur gesamten logischen Transaktion. Sie halten nur an der Operation am page fest.

Verriegelungen werden von der Engine zum Synchronisieren mehrerer Threads verwendet (z. B. wenn versucht wird, eine Tabelle einzufügen). Latches sind nicht für Entwickler oder Anwendungen gedacht, sondern für die Engine. Latches sind interne Kontrollmechanismen. Während Sperren sind für den Entwickler und die Anwendung zu steuern. Latches dienen der Konsistenz des internen Speichers. Sperren dienen der logischen Transaktionskonsistenz.

Wartezeiten durch Zwischenspeicher sind sehr wichtig für die Diagnose von Leistungsproblemen. Werfen Sie einen Blick auf Diagnosing and Resolving Latch Contention on SQL Server - Whitepaper. Die PAGEIOLATCH_EX ist eine wichtige Warteart.

Referenzen

  1. SQL Server Latches and their indication of performance issues
  2. Knee-Jerk Wait Statistics : PAGELATCH
  3. Inside SQL Server: Indexing and Locking
1

Der Unterschied zwischen Schloss und Riegel:

Reference taken from this blog.

Sperren stellen sicher, dass derselbe Datensatz nicht durch zwei verschiedene Verbindungen geändert werden kann, und Sperren stellen sicher, dass sich der Datensatz in einer geeigneten Datenseite für weitere Lese- und Schreibvorgänge befindet.

Sperren bieten eine Konsistenz der logischen Transaktion und Latches bieten eine Konsistenz des Speicherbereichs.

Der DBA kann Datenbanksperren steuern und verwalten, indem er unterschiedliche Isolationsstufen anwendet, und für Latches hat DBA keine Kontrolle, da er vom SQL Server verwaltet wird.

10

Von CMU 15-721 (Frühjahr 2016), Vortrag 6 Präsentation, Folien 25 und 26, die A Survey of B-Tree Locking Techniques von Goetz Graefe zitiert:

Schlösser
→ den logischen Inhalt der Schutz Index von anderen txns .
→ Für txn Dauer gehalten.
→ Sie müssen in der Lage sein, Änderungen rückgängig zu machen.

Latches
→ schützt die kritischen Abschnitte der internen Datenstruktur des Index von anderen Threads.
→ Für Betriebsdauer gehalten.
→ Es muss nicht möglich sein, Änderungen rückgängig zu machen.

Locks and latches

0

von OLTP Through the Looking Glass, and What We Found There von Stonebraker Zitiert et al.

Sperren. Herkömmliche zweiphasige Sperren verursachen einen beträchtlichen Aufwand, da alle Zugriffe auf Datenbankstrukturen von einer separaten Entität, dem Sperrmanager, gesteuert werden.

Verriegelung. In einer Multithread-Datenbank müssen viele Datenstrukturen zwischengespeichert werden, bevor auf sie zugegriffen werden kann. Wenn Sie diese Funktion entfernen und zu einem Singlethread-Ansatz wechseln, wirkt sich dies spürbar auf die Leistung aus.

Diese Interpretation verknüpft dann das Sperren mit Objekten auf Datenbankebene, z.B. Zeilen, während Latches auf der unteren Ebene von Datenstrukturen arbeiten.

Verwandte Themen