Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle – Wie verwaltet Oracle transaktionsspezifische DML-Anweisungen?

Oracle erstellt einen Index, um die Primärschlüsseleinschränkung zu erzwingen (standardmäßig ein eindeutiger Index). Wenn Sitzung A die erste Zeile einfügt, wird die Indexstruktur aktualisiert, aber die Änderung wird nicht festgeschrieben. Wenn Sitzung B versucht, die zweite Zeile einzufügen, stellt die Indexwartungsoperation fest, dass im Index bereits ein ausstehender Eintrag mit diesem bestimmten Schlüssel vorhanden ist. Sitzung B kann den Latch, der die gemeinsam genutzte Indexstruktur schützt, nicht erwerben, sodass er blockiert, bis die Transaktion von Sitzung A abgeschlossen ist. An diesem Punkt ist Sitzung B entweder in der Lage, den Latch abzurufen und eine eigene Änderung am Index vorzunehmen (weil A zurückgesetzt wurde), oder sie stellt fest, dass der andere Eintrag festgeschrieben wurde, und löst eine eindeutige Einschränkungsverletzung aus (weil A festgeschrieben wurde ).