Dies ist eine bescheidene Frage, die gestellt wird, um mein Wissen zu erweitern. Sei freundlich in deiner Antwort.
Als langjähriger Anwendungsentwickler weiß ich auf einer bestimmten Ebene, was eine Transaktion ist (ich verwende sie die ganze Zeit). Abgesehen von den Isolationsstufen für Transaktionen kann ein Arbeitsblock auf hoher Ebene vollständig oder gar nicht abgeschlossen werden, und es ist ein gewisses Maß an Isolation von anderen datenbankmodifizierenden Aktivitäten möglich.
Ich weiß auch, was (in verschiedenen Datenbanken) eine Sperre ist oder zumindest, wie sich eine Sperre verhält (wenn ich eine Tabelle explizit sperre, kann kein anderer Prozess oder Thread etwas über diese Tabelle aktualisieren).
Was mir am deutlichsten nicht klar ist: Wenn ich in verschiedenen Datenbanken explizit eine Zeile oder eine Tabelle sperre, verwende ich genau dieselben Konstrukte, die von den Transaktionseinrichtungen der Datenbank unter der Deckung verwendet werden, damit die Transaktion ordnungsgemäß funktioniert?
Das heißt, es fällt mir ein, dass eine Transaktion, um atomar und isoliert zu sein, eine Sperrung durchführen muss. Handelt es sich bei diesem transaktionsinitiierten, durch Transaktion verborgenen Sperren um dieselbe Art von Sperren, auf die ich mithilfe von Konstrukten wie SELECT FOR UPDATE
oder expliziten LOCK
Befehlen aus verschiedenen Datenbanken zugreifen kann ? Oder sind diese beiden Konzepte völlig unterschiedlich?
Wieder entschuldige ich mich für die Naivität dieser Frage; Ich freue mich, auf weitere grundlegende Quellen hingewiesen zu werden.