Heim Datenbank MySQL-Tutorial Datenbank – Eine kurze Diskussion der vier Transaktionsisolationsstufen

Datenbank – Eine kurze Diskussion der vier Transaktionsisolationsstufen

Mar 13, 2017 pm 04:46 PM

Die Datenbank bietet vier Isolationsstufen mit unterschiedlichen Sperrklassen.

Unter den vier Isolationsstufen ist „Read Uncommitted“ die niedrigste 🎜>Die Standardisolationsstufe der meisten Datenbanken ist: Read Committed, wie z. B. SQL Server, Oracle
Die Standardisolationsstufe einiger Datenbanken ist Repeatable Read, wie z. B.
MySQL InnoDB-Speicher-Engine Sogar Es handelt sich um die niedrigste Ebene, und die erste Art von verlorenen Aktualisierungsproblemen tritt nicht auf
1. Dirty Read (die Transaktion wird nicht festgeschrieben, im Voraus gelesen): Dirty Read bedeutet, dass eine Transaktion auf Daten zugreift Die Daten wurden geändert und diese Änderung wurde noch nicht an die Datenbank übermittelt. Zu diesem Zeitpunkt greift auch eine andere Transaktion auf diese Daten zu und verwendet diese Daten.
2. Nicht wiederholbares Lesen (Inkonsistenz zwischen zwei Lesevorgängen): bezieht sich auf das mehrmalige Lesen derselben Daten innerhalb einer Transaktion. Bevor diese Transaktion endet, greift auch eine andere Transaktion auf dieselben Daten zu. Dann können zwischen den beiden Lesevorgängen der Daten in der ersten Transaktion aufgrund der Änderung der zweiten Transaktion die von der ersten Transaktion zweimal gelesenen Daten unterschiedlich sein. Auf diese Weise sind die innerhalb einer Transaktion zweimal gelesenen Daten unterschiedlich und werden daher als nicht wiederholbares Lesen bezeichnet. Beispielsweise liest ein Redakteur dasselbe Dokument zweimal, aber zwischen den Lesevorgängen schreibt der Autor das Dokument neu. Wenn der Redakteur das Dokument ein zweites Mal liest, hat sich das Dokument geändert. Rohlesevorgänge sind nicht wiederholbar. Dieses Problem kann vermieden werden, wenn Redakteure das Dokument erst dann lesen können, wenn der Autor mit dem Schreiben fertig ist.
3. Phantom-Lesen: bezieht sich auf ein Phänomen, das auftritt, wenn Transaktionen nicht unabhängig voneinander ausgeführt werden. Beispielsweise ändert die erste Transaktion die Daten in einer Tabelle und diese Änderung betrifft alle Datenzeilen in der Tabelle. Gleichzeitig werden durch die zweite Transaktion auch die Daten in dieser Tabelle geändert. Durch diese Änderung wird eine Zeile mit neuen Daten in die Tabelle eingefügt. Dann wird der Benutzer, der die erste Transaktion ausführt, in Zukunft feststellen, dass die Tabelle immer noch unveränderte Datenzeilen enthält, als ob eine Halluzination aufgetreten wäre. Beispielsweise ändert ein Redakteur ein von einem Autor eingereichtes Dokument, aber wenn die Produktion seine Änderungen in die Masterkopie des Dokuments einfügt, stellt sich heraus, dass der Autor dem Dokument neues, unbearbeitetes Material hinzugefügt hat. Dieses Problem kann vermieden werden, wenn niemand neues Material zum Dokument hinzufügen kann, bis die Redaktion und die Produktionsabteilung die Arbeit am Originaldokument abgeschlossen haben.
4. Die erste Art von Aktualisierungsverlust (Rollback-Verlust):
Wenn zwei Transaktionen dieselbe Datenquelle aktualisieren und die erste Transaktion festgeschrieben und die andere Transaktion widerrufen wird, wird die erste Transaktion durchgeführt der Firma wurden ebenfalls storniert. Mit anderen Worten: Die Ergebnisse der ersten Transaktion gehen verloren.
5. Die zweite Art von Aktualisierungsverlust (Überschreibverlust):
Die zweite Art von Aktualisierungsverlust ist ein Parallelitätsproblem, das häufig in praktischen Anwendungen auftritt. Es handelt sich im Wesentlichen um die gleiche Art von Parallelitätsproblem wie beim nicht wiederholbaren Lesen. Normalerweise wird es als Sonderfall nicht wiederholbarer Lesevorgänge betrachtet: Wenn zwei oder mehr Transaktionen denselben Datensatz
abfragen und dann jeweils die Zeile basierend auf den ursprünglichen Abfrageergebnissen aktualisieren, tritt die zweite Art von verlorener Aktualisierung auf . Da jede Transaktion die Existenz anderer Transaktionen nicht kennt, überschreiben die von der letzten Transaktion am Datensatz vorgenommenen Änderungen die festgeschriebenen Aktualisierungen, die von anderen Transaktionen am Datensatz vorgenommen wurden ...Ergänzung: Frühlingserklärung basierend auf Metadaten Sexuelle Angelegenheiten: Das

Isolation
-Attribut unterstützt insgesamt fünf Transaktionseinstellungen. Die Details lauten wie folgt:

l          DEFAULT 使用数据库设置的隔离级别 ( 默认 ) ,由 DBA 默认的设置来决定隔离级别 . 
l          READ_UNCOMMITTED 会出现脏读、不可重复读、幻读 ( 隔离级别最低,并发性能高 ) 
l          READ_COMMITTED  会出现不可重复读、幻读问题(锁定正在读取的行) 
l          REPEATABLE_READ 会出幻读(锁定所读取的所有行) 
l          SERIALIZABLE 保证所有的情况不会发生(锁表)
Nach dem Login kopieren

Der Schwerpunkt des nicht wiederholbaren Lesens liegt auf der Änderung:
Unter den gleichen Bedingungen lesen Sie die Daten, die Sie gelesen haben, erneut und stellen fest, dass der Wert unterschiedlich ist.
Der Schwerpunkt des Phantomlesens liegt auf hinzufügen oder löschen
Unter den gleichen Bedingungen ist die Anzahl der beim ersten und zweiten Mal ausgelesenen Datensätze unterschiedlich

--------------------------------- ----- -----------------------------------
Verhaltenstypen für die Transaktionsweitergabe

Spring in TransactionDefinition Interface spezifiziert 7 Arten von Transaktionsweitergabeverhalten

Sie geben Transaktionsmethoden an und wie Transaktionen weitergegeben werden, wenn verschachtelte Aufrufe von Transaktionsmethoden auftreten:

Tabelle 1 Verhaltenstyp der Transaktionsweitergabe

Verhaltenstyp der Transaktionsweitergabe
Beschreibung

PROPAGATION_REQUIRED
Wenn keine aktuelle Transaktion vorhanden ist, erstellen Sie eine neue Transaktion. Wenn bereits eine Transaktion vorhanden ist, fügen Sie diese hinzu zu dieser Transaktion. Dies ist die häufigste Wahl.

PROPAGATION_SUPPORTS
Unterstützt die aktuelle Transaktion. Wenn derzeit keine Transaktion vorhanden ist, wird sie auf nicht-transaktionale Weise ausgeführt.

PROPAGATION_MANDATORY
Verwenden Sie die aktuelle Transaktion. Wenn keine aktuelle Transaktion vorhanden ist, lösen Sie eine Ausnahme aus.

PROPAGATION_REQUIRES_NEW
Erstellen Sie eine neue Transaktion. Wenn derzeit eine Transaktion vorhanden ist, unterbrechen Sie die aktuelle Transaktion.

PROPAGATION_NOT_SUPPORTED
Führen Sie Vorgänge auf nicht-transaktionale Weise aus. Wenn derzeit eine Transaktion vorhanden ist, unterbrechen Sie die aktuelle Transaktion.

PROPAGATION_NEVER
Wird nicht transaktional ausgeführt. Wenn derzeit eine Transaktion vorhanden ist, wird eine Ausnahme ausgelöst.

PROPAGATION_NESTED
Wenn aktuell eine Transaktion existiert, wird sie innerhalb der verschachtelten Transaktion ausgeführt. Wenn keine aktuelle Transaktion vorhanden ist, führen Sie ähnliche Vorgänge wie PROPAGATION_REQUIRED aus.

-------------------------------------------- ------ -------------
Einfach bedeutet, dass keine Vorlagen erforderlich sind. xhtml ist die Standardeinstellung, bei einigen von struts2 bereitgestellten Modulen ist dies beispielsweise möglich um << zu Ihrem Formular hinzuzufügen Fehlermeldungsverarbeitung und Seitenüberprüfung
Schauen Sie sich struts.properties oder


an. Letzteres wird, wie der Name schon sagt, mit CSS kombiniert, um diese Inhalte zu verarbeiten. Wenn Sie ein Anfänger sind, müssen Sie diese nicht berücksichtigen. Wenn Sie nicht möchten, dass diese Vorlageninhalte Auswirkungen auf Ihre Entwicklung haben, können Sie sie in „einfach“ ändern.
Wenn Ihre Seite CSS-Layout verwendet und Sie die erweiterten Funktionen von struts2 nutzen möchten, verwenden Sie css_xhtml, um eine bessere Benutzererfahrung zu erzielen.

org/apache/struts2/default.properties
struts.ui.theme=xhtml  
struts.ui.templateDir=template  
struts.ui.templateSuffix=ftl  
你可以在struts.xml中添加
<constant name="struts.ui.theme" value="simple" />来修改这个参数
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDatenbank – Eine kurze Diskussion der vier Transaktionsisolationsstufen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie implementiert die Go-Sprache die Hinzufügungs-, Lösch-, Änderungs- und Abfragevorgänge der Datenbank? Wie implementiert die Go-Sprache die Hinzufügungs-, Lösch-, Änderungs- und Abfragevorgänge der Datenbank? Mar 27, 2024 pm 09:39 PM

Die Go-Sprache ist eine effiziente, prägnante und leicht zu erlernende Programmiersprache. Sie wird von Entwicklern aufgrund ihrer Vorteile bei der gleichzeitigen Programmierung und Netzwerkprogrammierung bevorzugt. In der tatsächlichen Entwicklung sind Datenbankoperationen ein unverzichtbarer Bestandteil. In diesem Artikel wird erläutert, wie die Go-Sprache zum Implementieren von Datenbank-Hinzufügungs-, Lösch-, Änderungs- und Abfrageoperationen verwendet wird. In der Go-Sprache verwenden wir normalerweise Bibliotheken von Drittanbietern, um Datenbanken zu betreiben, z. B. häufig verwendete SQL-Pakete, Gorm usw. Hier nehmen wir das SQL-Paket als Beispiel, um vorzustellen, wie die Hinzufügungs-, Lösch-, Änderungs- und Abfragevorgänge der Datenbank implementiert werden. Angenommen, wir verwenden eine MySQL-Datenbank.

iOS 18 fügt eine neue Albumfunktion „Wiederhergestellt' hinzu, um verlorene oder beschädigte Fotos wiederherzustellen iOS 18 fügt eine neue Albumfunktion „Wiederhergestellt' hinzu, um verlorene oder beschädigte Fotos wiederherzustellen Jul 18, 2024 am 05:48 AM

Apples neueste Versionen der iOS18-, iPadOS18- und macOS Sequoia-Systeme haben der Fotoanwendung eine wichtige Funktion hinzugefügt, die Benutzern dabei helfen soll, aus verschiedenen Gründen verlorene oder beschädigte Fotos und Videos einfach wiederherzustellen. Mit der neuen Funktion wird im Abschnitt „Extras“ der Fotos-App ein Album mit dem Namen „Wiederhergestellt“ eingeführt, das automatisch angezeigt wird, wenn ein Benutzer Bilder oder Videos auf seinem Gerät hat, die nicht Teil seiner Fotobibliothek sind. Das Aufkommen des Albums „Wiederhergestellt“ bietet eine Lösung für Fotos und Videos, die aufgrund einer Datenbankbeschädigung verloren gehen, die Kameraanwendung nicht korrekt in der Fotobibliothek speichert oder eine Drittanbieteranwendung die Fotobibliothek verwaltet. Benutzer benötigen nur wenige einfache Schritte

Wie implementiert Hibernate polymorphe Zuordnung? Wie implementiert Hibernate polymorphe Zuordnung? Apr 17, 2024 pm 12:09 PM

Die polymorphe Hibernate-Zuordnung kann geerbte Klassen der Datenbank zuordnen und bietet die folgenden Zuordnungstypen: Joined-Subclass: Erstellen Sie eine separate Tabelle für die Unterklasse, einschließlich aller Spalten der übergeordneten Klasse. Tabelle pro Klasse: Erstellen Sie eine separate Tabelle für Unterklassen, die nur unterklassenspezifische Spalten enthält. Union-Unterklasse: ähnelt der verbundenen Unterklasse, aber die Tabelle der übergeordneten Klasse vereint alle Spalten der Unterklasse.

Ausführliches Tutorial zum Herstellen einer Datenbankverbindung mit MySQLi in PHP Ausführliches Tutorial zum Herstellen einer Datenbankverbindung mit MySQLi in PHP Jun 04, 2024 pm 01:42 PM

So verwenden Sie MySQLi zum Herstellen einer Datenbankverbindung in PHP: MySQLi-Erweiterung einbinden (require_once) Verbindungsfunktion erstellen (functionconnect_to_db) Verbindungsfunktion aufrufen ($conn=connect_to_db()) Abfrage ausführen ($result=$conn->query()) Schließen Verbindung ( $conn->close())

Eine ausführliche Analyse, wie HTML die Datenbank liest Eine ausführliche Analyse, wie HTML die Datenbank liest Apr 09, 2024 pm 12:36 PM

HTML kann die Datenbank nicht direkt lesen, dies kann jedoch über JavaScript und AJAX erreicht werden. Zu den Schritten gehören das Herstellen einer Datenbankverbindung, das Senden einer Abfrage, das Verarbeiten der Antwort und das Aktualisieren der Seite. Dieser Artikel bietet ein praktisches Beispiel für die Verwendung von JavaScript, AJAX und PHP zum Lesen von Daten aus einer MySQL-Datenbank und zeigt, wie Abfrageergebnisse dynamisch auf einer HTML-Seite angezeigt werden. In diesem Beispiel wird XMLHttpRequest verwendet, um eine Datenbankverbindung herzustellen, eine Abfrage zu senden und die Antwort zu verarbeiten. Dadurch werden Daten in Seitenelemente gefüllt und die Funktion des HTML-Lesens der Datenbank realisiert.

Umgang mit Datenbankverbindungsfehlern in PHP Umgang mit Datenbankverbindungsfehlern in PHP Jun 05, 2024 pm 02:16 PM

Um Datenbankverbindungsfehler in PHP zu behandeln, können Sie die folgenden Schritte ausführen: Verwenden Sie mysqli_connect_errno(), um den Fehlercode abzurufen. Verwenden Sie mysqli_connect_error(), um die Fehlermeldung abzurufen. Durch die Erfassung und Protokollierung dieser Fehlermeldungen können Datenbankverbindungsprobleme leicht identifiziert und behoben werden, wodurch der reibungslose Betrieb Ihrer Anwendung gewährleistet wird.

Tipps und Praktiken zum Umgang mit verstümmelten chinesischen Zeichen in Datenbanken mit PHP Tipps und Praktiken zum Umgang mit verstümmelten chinesischen Zeichen in Datenbanken mit PHP Mar 27, 2024 pm 05:21 PM

PHP ist eine Back-End-Programmiersprache, die in der Website-Entwicklung weit verbreitet ist. Sie verfügt über leistungsstarke Datenbankbetriebsfunktionen und wird häufig zur Interaktion mit Datenbanken wie MySQL verwendet. Aufgrund der Komplexität der Kodierung chinesischer Zeichen treten jedoch häufig Probleme beim Umgang mit verstümmelten chinesischen Zeichen in der Datenbank auf. In diesem Artikel werden die Fähigkeiten und Praktiken von PHP beim Umgang mit chinesischen verstümmelten Zeichen in Datenbanken vorgestellt, einschließlich häufiger Ursachen für verstümmelte Zeichen, Lösungen und spezifischer Codebeispiele. Häufige Gründe für verstümmelte Zeichen sind falsche Einstellungen für den Datenbank-Zeichensatz: Beim Erstellen der Datenbank muss der richtige Zeichensatz ausgewählt werden, z. B. utf8 oder u

Wie verwende ich Datenbank-Callback-Funktionen in Golang? Wie verwende ich Datenbank-Callback-Funktionen in Golang? Jun 03, 2024 pm 02:20 PM

Durch die Verwendung der Datenbank-Rückruffunktion in Golang kann Folgendes erreicht werden: Ausführen von benutzerdefiniertem Code, nachdem der angegebene Datenbankvorgang abgeschlossen ist. Fügen Sie benutzerdefiniertes Verhalten durch separate Funktionen hinzu, ohne zusätzlichen Code zu schreiben. Rückruffunktionen stehen für Einfüge-, Aktualisierungs-, Lösch- und Abfragevorgänge zur Verfügung. Sie müssen die Funktion sql.Exec, sql.QueryRow oder sql.Query verwenden, um die Rückruffunktion verwenden zu können.

See all articles