Um bei Datenbankoperationen die Richtigkeit gleichzeitig gelesener Daten wirksam sicherzustellen, wird die Transaktionsisolationsstufe vorgeschlagen. In der Standard-SQL-Spezifikation sind vier Transaktionsisolationsstufen definiert, und verschiedene Isolationsstufen behandeln Transaktionen unterschiedlich. Der folgende Artikel stellt Ihnen die Transaktionsisolationsstufe vor. Ich hoffe, dass er für Sie hilfreich ist.
Allgemeine Datenbanken umfassen vier Isolationsstufen, und unterschiedliche Isolationsstufen behandeln Transaktionen unterschiedlich.
Unautorisiertes Lesen
Auch bekannt als Read Uncommitted: Dirty Reads sind zulässig, verlorene Aktualisierungen sind jedoch nicht zulässig. Wenn eine Transaktion mit dem Schreiben von Daten begonnen hat, darf eine andere Transaktion nicht gleichzeitig Daten schreiben, andere Transaktionen dürfen jedoch diese Datenzeile lesen. Diese Isolationsstufe kann durch eine „exklusive Schreibsperre“ erreicht werden.
Authorized Read
Auch bekannt als Read Committed: Nicht wiederholbare Lesevorgänge sind zulässig, Dirty Reads sind jedoch nicht zulässig. Die Transaktion, die die Daten liest, ermöglicht es anderen Transaktionen, weiterhin auf die Datenzeile zuzugreifen, aber die nicht festgeschriebene Schreibtransaktion verhindert, dass andere Transaktionen auf die Zeile zugreifen. Dies kann durch „sofortige gemeinsame Lesesperre“ und „exklusive Schreibsperre“ erreicht werden.
Wiederholbare Lesevorgänge
Nicht wiederholbare Lesevorgänge und Dirty Reads sind verboten, es können jedoch manchmal Phantom-Lesedaten auftreten. Transaktionen, die Daten lesen, deaktivieren Schreibtransaktionen (lassen jedoch Lesetransaktionen zu), und Schreibtransaktionen deaktivieren alle anderen Transaktionen. Dies kann durch „gemeinsame Lesesperre“ und „exklusive Schreibsperre“ erreicht werden.
Serialisierbar
Sorgt für strikte Transaktionsisolation. Es erfordert, dass Transaktionen seriell ausgeführt werden, und Transaktionen können nur nacheinander und nicht gleichzeitig ausgeführt werden. Die Serialisierung von Transaktionen kann nicht nur durch „Sperren auf Zeilenebene“ erreicht werden, um sicherzustellen, dass die Transaktion, die gerade den Abfragevorgang ausgeführt hat, nicht auf neu eingefügte Daten zugreift.
Je höher die Isolationsstufe, desto vollständiger und konsistenter können die Daten garantiert werden, aber desto größer ist auch die Auswirkung auf die Parallelitätsleistung. Für die meisten Anwendungen können Sie der Isolationsstufe des Datenbanksystems Vorrang auf „Read Committed“ geben. Es kann Dirty Reads vermeiden und bietet eine bessere Parallelitätsleistung. Obwohl dies zu Parallelitätsproblemen wie nicht wiederholbaren Lesevorgängen, Phantom-Lesevorgängen und verlorenen Aktualisierungen vom Typ II führt, können solche Probleme in einzelnen Situationen, in denen solche Probleme auftreten können, von der Anwendung mithilfe pessimistischer Sperren oder optimistischer Sperren gesteuert werden.
Das obige ist der detaillierte Inhalt vonWelche Transaktionsisolationsstufen gibt es in der Datenbank?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!