Heim Datenbank MySQL-Tutorial Die Beziehung zwischen MySQL-Sperren, Transaktionsisolationsstufen und Anwendungen

Die Beziehung zwischen MySQL-Sperren, Transaktionsisolationsstufen und Anwendungen

Dec 21, 2023 am 08:27 AM
应用 mysql锁 事务隔离级别

MySQL 锁的事务隔离级别与应用

MySQL-Sperrtransaktionsisolationsstufe und -anwendung
In der Datenbank ist die Transaktionsisolationsstufe ein sehr wichtiges Konzept, das den Grad der Isolation zwischen gleichzeitigen Transaktionen bestimmt. MySQL bietet vier Transaktionsisolationsstufen: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ und SERIALIZABLE. Verschiedene Transaktionsisolationsstufen verfügen über unterschiedliche Sperrstrategien für das Lesen und Schreiben von Daten. Daher ist es wichtig, die richtige Transaktionsisolationsstufe in Ihrer Anwendung richtig auszuwählen und zu verwenden.

  1. UNBEKANNT LESEN: Auf dieser Ebene können Transaktionen nicht festgeschriebene Daten von anderen Transaktionen lesen. Dies bedeutet, dass es zu einem Dirty Read kommen kann, d. h. es werden ungeprüfte Daten gelesen. Diese Stufe wird im Allgemeinen nicht empfohlen, es sei denn, Sie müssen unter besonderen Umständen Echtzeitdaten erhalten.
  2. READ COMMITTED: Auf dieser Ebene können Transaktionen nur übermittelte Daten lesen. Dies vermeidet Dirty-Read-Probleme, kann jedoch zu nicht wiederholbaren Leseproblemen führen. Beim nicht wiederholbaren Lesen werden dieselben Daten zweimal in derselben Transaktion gelesen, die Ergebnisse sind jedoch inkonsistent. Dies liegt daran, dass andere Transaktionen die Daten möglicherweise während der Transaktionsausführung aktualisiert haben.
  3. WIEDERHOLBARES LESEN: Auf dieser Ebene kann eine Transaktion dieselben Daten mehrmals mit konsistenten Ergebnissen lesen. Dies wird dadurch erreicht, dass die Daten während des Lesevorgangs gesperrt werden. Auf der Ebene REPEATABLE READ teilt der Lesevorgang die Sperre für die Datenzeilen, die die Bedingungen erfüllen, sodass andere Transaktionen die Daten nur lesen, aber nicht ändern können. Es kann jedoch weiterhin zu Phantomleseproblemen kommen. Beim Phantomlesen werden Daten in einem Bereich zweimal in derselben Transaktion gelesen, die Ergebnisse sind jedoch inkonsistent. Dies liegt daran, dass während der Transaktionsausführung möglicherweise andere Transaktionen Daten eingefügt oder gelöscht haben, die die Bedingungen erfüllen.
  4. SERIALISIERBAR: Auf dieser Ebene werden Transaktionen seriell ausgeführt. Dies bedeutet, dass nur eine Transaktion die Daten gleichzeitig ändern kann und andere Transaktionen auf die Freigabe der Sperre warten. Auf dieser Ebene können die Probleme von Dirty Reads, nicht wiederholbaren Lesevorgängen und Phantom Reads vollständig vermieden werden, sie hat jedoch auch erhebliche Auswirkungen auf die Parallelitätsleistung, da Sie warten müssen, bis andere Transaktionen die Sperre aufheben. 🔜
  5. CREATE TABLE test_table (
      id INT PRIMARY KEY,
      name VARCHAR(100),
      age INT
    );
    Nach dem Login kopieren
In diesem Beispiel liest Transaktion 1 die Daten, die von Transaktion 2 geändert, aber nicht festgeschrieben wurden.

READ COMMITTED:

-- 执行事务1
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
START TRANSACTION;
SELECT * FROM test_table WHERE id = 1;

-- 执行事务2
START TRANSACTION;
UPDATE test_table SET age = 20 WHERE id = 1;
COMMIT;

-- 继续执行事务1
SELECT * FROM test_table WHERE id = 1;
COMMIT;
Nach dem Login kopieren

In diesem Beispiel kann Transaktion 1 nur die Daten lesen, die Transaktion 2 übermittelt hat.
  1. WIEDERHOLBARES LESEN:

    -- 执行事务1
    SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
    START TRANSACTION;
    SELECT * FROM test_table WHERE id = 1;
    
    -- 执行事务2
    START TRANSACTION;
    UPDATE test_table SET age = 20 WHERE id = 1;
    COMMIT;
    
    -- 继续执行事务1
    SELECT * FROM test_table WHERE id = 1;
    COMMIT;
    Nach dem Login kopieren

    In diesem Beispiel fügt Transaktion 1 beim Lesen von Daten eine gemeinsame Sperre hinzu und Transaktion 2 wartet darauf, dass Transaktion 1 die gemeinsame Sperre aufhebt, bevor sie ausgeführt werden kann.
  2. SERIALISIERBAR:

    -- 执行事务1
    SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
    START TRANSACTION;
    SELECT * FROM test_table WHERE id = 1;
    
    -- 执行事务2
    START TRANSACTION;
    UPDATE test_table SET age = 20 WHERE id = 1;
    COMMIT;
    
    -- 继续执行事务1
    SELECT * FROM test_table WHERE id = 1;
    COMMIT;
    Nach dem Login kopieren
    In diesem Beispiel fügt Transaktion 1 beim Lesen von Daten eine gemeinsame Sperre hinzu und Transaktion 2 wartet darauf, dass Transaktion 1 die gemeinsame Sperre aufhebt, bevor sie ausgeführt werden kann.
  3. Anhand der obigen Codebeispiele können wir sehen, wie die Sperrstrategie unter verschiedenen Transaktionsisolationsstufen funktioniert. Bei der tatsächlichen Anwendungsentwicklung ist es sehr wichtig, die geeignete Transaktionsisolationsstufe auszuwählen, die entsprechend den spezifischen Geschäftsszenarien und Leistungsanforderungen ausgewählt werden kann.

Das obige ist der detaillierte Inhalt vonDie Beziehung zwischen MySQL-Sperren, Transaktionsisolationsstufen und Anwendungen. 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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

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)

Die Rolle und praktische Anwendung von Pfeilsymbolen in PHP Die Rolle und praktische Anwendung von Pfeilsymbolen in PHP Mar 22, 2024 am 11:30 AM

Die Rolle und praktische Anwendung von Pfeilsymbolen in PHP In PHP wird das Pfeilsymbol (->) normalerweise verwendet, um auf die Eigenschaften und Methoden von Objekten zuzugreifen. Objekte sind eines der Grundkonzepte der objektorientierten Programmierung (OOP) in PHP. In der tatsächlichen Entwicklung spielen Pfeilsymbole eine wichtige Rolle bei der Bedienung von Objekten. In diesem Artikel werden die Rolle und die praktische Anwendung von Pfeilsymbolen vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern ein besseres Verständnis zu erleichtern. 1. Die Rolle des Pfeilsymbols für den Zugriff auf die Eigenschaften eines Objekts. Das Pfeilsymbol kann für den Zugriff auf die Eigenschaften eines Objekts verwendet werden. Wenn wir ein Paar instanziieren

So machen Sie das Löschen vom Startbildschirm im iPhone rückgängig So machen Sie das Löschen vom Startbildschirm im iPhone rückgängig Apr 17, 2024 pm 07:37 PM

Sie haben etwas Wichtiges von Ihrem Startbildschirm gelöscht und versuchen, es wiederherzustellen? Es gibt verschiedene Möglichkeiten, App-Symbole wieder auf dem Bildschirm anzuzeigen. Wir haben alle Methoden besprochen, die Sie anwenden können, um das App-Symbol wieder auf dem Startbildschirm anzuzeigen. So machen Sie das Entfernen vom Startbildschirm auf dem iPhone rückgängig. Wie bereits erwähnt, gibt es mehrere Möglichkeiten, diese Änderung auf dem iPhone wiederherzustellen. Methode 1 – App-Symbol in der App-Bibliothek ersetzen Sie können ein App-Symbol direkt aus der App-Bibliothek auf Ihrem Startbildschirm platzieren. Schritt 1 – Wischen Sie seitwärts, um alle Apps in der App-Bibliothek zu finden. Schritt 2 – Suchen Sie das App-Symbol, das Sie zuvor gelöscht haben. Schritt 3 – Ziehen Sie einfach das App-Symbol aus der Hauptbibliothek an die richtige Stelle auf dem Startbildschirm. Dies ist das Anwendungsdiagramm

Vom Anfänger bis zum Experten: Entdecken Sie verschiedene Anwendungsszenarien des Linux-Befehls tee Vom Anfänger bis zum Experten: Entdecken Sie verschiedene Anwendungsszenarien des Linux-Befehls tee Mar 20, 2024 am 10:00 AM

Der Linuxtee-Befehl ist ein sehr nützliches Befehlszeilentool, das Ausgaben in eine Datei schreiben oder an einen anderen Befehl senden kann, ohne die vorhandene Ausgabe zu beeinträchtigen. In diesem Artikel werden wir die verschiedenen Anwendungsszenarien des Linuxtee-Befehls eingehend untersuchen, vom Anfänger bis zum Experten. 1. Grundlegende Verwendung Werfen wir zunächst einen Blick auf die grundlegende Verwendung des Tee-Befehls. Die Syntax des Tee-Befehls lautet wie folgt: tee[OPTION]...[DATEI]...Dieser Befehl liest Daten aus der Standardeingabe und speichert sie dort

Entdecken Sie die Vorteile und Anwendungsszenarien der Go-Sprache Entdecken Sie die Vorteile und Anwendungsszenarien der Go-Sprache Mar 27, 2024 pm 03:48 PM

Die Go-Sprache ist eine Open-Source-Programmiersprache, die von Google entwickelt und erstmals 2007 veröffentlicht wurde. Sie ist als einfache, leicht zu erlernende, effiziente Sprache mit hoher Parallelität konzipiert und wird von immer mehr Entwicklern bevorzugt. In diesem Artikel werden die Vorteile der Go-Sprache untersucht, einige für die Go-Sprache geeignete Anwendungsszenarien vorgestellt und spezifische Codebeispiele gegeben. Vorteile: Starke Parallelität: Die Go-Sprache verfügt über eine integrierte Unterstützung für leichtgewichtige Threads-Goroutinen, mit denen die gleichzeitige Programmierung problemlos implementiert werden kann. Goroutine kann mit dem Schlüsselwort go gestartet werden

Die breite Anwendung von Linux im Bereich Cloud Computing Die breite Anwendung von Linux im Bereich Cloud Computing Mar 20, 2024 pm 04:51 PM

Die breite Anwendung von Linux im Bereich Cloud Computing Mit der kontinuierlichen Weiterentwicklung und Popularisierung der Cloud-Computing-Technologie spielt Linux als Open-Source-Betriebssystem eine wichtige Rolle im Bereich Cloud Computing. Aufgrund seiner Stabilität, Sicherheit und Flexibilität werden Linux-Systeme häufig in verschiedenen Cloud-Computing-Plattformen und -Diensten eingesetzt und bieten eine solide Grundlage für die Entwicklung der Cloud-Computing-Technologie. In diesem Artikel werden die vielfältigen Einsatzmöglichkeiten von Linux im Bereich Cloud Computing vorgestellt und konkrete Codebeispiele gegeben. 1. Anwendungsvirtualisierungstechnologie von Linux in der Virtualisierungstechnologie der Cloud-Computing-Plattform

Verstehen Sie den Mechanismus und die Anwendung der Golang-Stack-Verwaltung Verstehen Sie den Mechanismus und die Anwendung der Golang-Stack-Verwaltung Mar 13, 2024 am 11:21 AM

Golang ist eine von Google entwickelte Open-Source-Programmiersprache, die über viele einzigartige Funktionen in der gleichzeitigen Programmierung und Speicherverwaltung verfügt. Unter diesen ist der Stapelverwaltungsmechanismus von Golang ein wichtiges Merkmal. Dieser Artikel konzentriert sich auf den Mechanismus und die Anwendung der Stapelverwaltung von Golang und gibt spezifische Codebeispiele. 1. Stapelverwaltung in Golang In Golang hat jede Goroutine ihren eigenen Stapel. Der Stapel wird zum Speichern von Informationen wie Parametern, lokalen Variablen und Funktionsrückgabeadressen von Funktionsaufrufen verwendet.

MySQL-Zeitstempel verstehen: Funktionen, Features und Anwendungsszenarien MySQL-Zeitstempel verstehen: Funktionen, Features und Anwendungsszenarien Mar 15, 2024 pm 04:36 PM

Der MySQL-Zeitstempel ist ein sehr wichtiger Datentyp, der Datum, Uhrzeit oder Datum plus Uhrzeit speichern kann. Im eigentlichen Entwicklungsprozess kann die rationelle Verwendung von Zeitstempeln die Effizienz von Datenbankoperationen verbessern und zeitbezogene Abfragen und Berechnungen erleichtern. In diesem Artikel werden die Funktionen, Features und Anwendungsszenarien von MySQL-Zeitstempeln erläutert und anhand spezifischer Codebeispiele erläutert. 1. Funktionen und Eigenschaften von MySQL-Zeitstempeln In MySQL gibt es zwei Arten von Zeitstempeln, einer ist TIMESTAMP

Tutorial, wie Apple laufende Apps schließt Tutorial, wie Apple laufende Apps schließt Mar 22, 2024 pm 10:00 PM

1. Zuerst klicken wir auf den kleinen weißen Punkt. 2. Klicken Sie auf das Gerät. 3. Klicken Sie auf Mehr. 4. Klicken Sie auf Anwendungsumschalter. 5. Schließen Sie den Anwendungshintergrund.

See all articles