Inhaltsverzeichnis
1, MVCC
2. Derzeit gelesen
3. Snapshot-Lesen (verbessert die gleichzeitige Abfragefähigkeit der Datenbank)
5. MVCC-Implementierungsprinzip
Heim Datenbank MySQL-Tutorial Was sind die Wissenspunkte der Parallelitätskontrolle mehrerer Versionen von MySQL MVCC?

Was sind die Wissenspunkte der Parallelitätskontrolle mehrerer Versionen von MySQL MVCC?

May 27, 2023 pm 11:31 PM
mysql mvcc

1, MVCC

Multi-Version Concurrency Control (MVCC) bezieht sich auf .... MVCC ist eine Methode zur Parallelitätskontrolle. Sie wird im Allgemeinen in Datenbankverwaltungssystemen verwendet, um gleichzeitigen Zugriff auf die Datenbank zu erreichen und Transaktionsspeicher in Programmiersprachen zu implementieren.

Die Implementierung von MVCC in MySQL InnoDB dient hauptsächlich dazu, die Leistung der Datenbank-Parallelität zu verbessern und eine bessere Methode zur Behandlung von Lese- und Schreibkonflikten zu verwenden, sodass auch bei > Lese- und Schreibkonflikten Es kann kein sperrendes und nicht blockierendes gleichzeitiges Lesen erreicht werden.

2. Derzeit gelesen

Vorgänge wie „Sperre im Freigabemodus auswählen“, „Aktualisieren“, „Einfügen“, „Löschen“ (exklusive Sperre) Es ist alles eine Art aktuelle Lektüre. Warum heißt es aktuelle Lektüre? Das heißt, es liest die neueste Version des Datensatzes. Beim Lesen muss auch sichergestellt werden, dass andere gleichzeitige Transaktionen den aktuellen Datensatz nicht ändern können und der gelesene Datensatz gesperrt wird.

3. Snapshot-Lesen (verbessert die gleichzeitige Abfragefähigkeit der Datenbank)

Auswahlvorgang ohne Sperren ist Snapshot-Lesen, dh nicht blockierendes Lesen ohne Sperren; Die Voraussetzung ist, dass die Isolationsebene nicht die serielle Ebene ist und Snapshot-Lesevorgänge auf serieller Ebene in aktuelle Lesevorgänge degenerieren. Der Grund, warum Snapshot-Lesevorgänge auftreten, basiert auf der Überlegung, die Parallelitätsleistung zu verbessern, und basiert auf der Implementierung von Snapshot-Lesevorgängen Das heißt, MVCC kann als eine Variante der Zeilensperre betrachtet werden, vermeidet jedoch in vielen Fällen den Overhead, da es auf mehreren Versionen basiert, was beim Snapshot-Lesen nicht der Fall ist unbedingt die neueste Datenversion. Dies kann die vorherige historische Version sein Versionen einer Datenversion, sodass es bei Lese- und Schreibvorgängen nicht zu Konflikten kommt. Snapshot-Lesen ist eine nicht blockierende Lesefunktion von MySQL zur Implementierung von MVCC. Die spezifische Implementierung des MVCC-Moduls in MySQL wird durch drei implizite Felder implementiert: Rückgängig-Protokoll und Leseansicht.

5. MVCC-Implementierungsprinzip

Das Implementierungsprinzip von mvcc basiert hauptsächlich auf den drei versteckten Feldern in der Datensatz-, Undolog- und Leseansicht.

Versteckte Felder

Zusätzlich zu unseren benutzerdefinierten Feldern verfügen Zeilendatensätze auch über DB_TRX_ID, DB_ROLL_PTR, DB_ROW_ID und andere Felder, die implizit von der Datenbank definiert werden .

DB_TRX_ID

6 Bytes, die zuletzt geänderte Transaktions-ID, zeichnen die Transaktions-ID auf, die diesen Datensatz erstellt oder zuletzt geändert hat. 🎜 🎜#

DB_ROLL_PTR

7 Bytes, Rollback-Zeiger, der auf die vorherige Version dieses Datensatzes zeigt, der zur Zusammenarbeit mit Undolog verwendet wird und auf die vorherige alte zeigt Version

DB_ROW_JD

6 Bytes, versteckter Primärschlüssel. Wenn die Datentabelle keinen Primärschlüssel hat, generiert innodb automatisch einen 6-Byte row_id

undo log

row_id

undo log

undolog被称之为回滚日志,表示在进行insert,delete,update操作的时候产生的方便回滚的日志 当进行insert操作的时候,产生的undolog只在事务回滚的时候需要,并且在事务提交之后可以被立刻丢弃 当进行update和delete操作的时候,产生的undolog不仅仅在事务回滚的时候需要,在快照读的时候也需要,所以不能随便删除,只有在快照读或事务回滚不涉及该日志时,对应的日志才会被purge线程统一清除(当数据发生更新和删除操作的时候都只是设置一下老记录的deleted_bit,并不是真正的将过时的记录删除,因为为了节省磁盘空间,innodb有专门的purge线程来清除deleted_bit为true的记录,如果某个记录的deleted_id为trueundolog wird als Rollback-Protokoll bezeichnet und gibt an, dass Einfügen, Löschen, und Aktualisierung werden während der Vorgänge generiert, um das Zurücksetzen zu erleichtern. Das generierte Undolog wird nur benötigt, wenn die Transaktion zurückgesetzt wird, und kann sofort nach der Durchführung von Aktualisierungs- und Löschvorgängen verworfen werden Das generierte Undolog wird nicht nur beim Zurücksetzen der Transaktion benötigt, sondern auch beim Lesen des Snapshots, sodass es nicht beiläufig gelöscht werden kann vom Löschthread einheitlich gelöscht werden (wenn die Daten bei einem Aktualisierungs- oder Löschvorgang ausgeführt werden, wird nur das gelöschte_Bit des alten Datensatzes festgelegt. Der veraltete Datensatz wird nicht tatsächlich gelöscht, da innodb über eine Besonderheit verfügt, um Speicherplatz zu sparen Bereinigungsthread, um den Datensatz deleted_bit auf true zu löschen. Wenn die deleted_id eines Datensatzes wahr ist und die DB_TRX_ID relativ zur Leseansicht des Bereinigungsthreads sichtbar ist, dann dieser Datensatz kann irgendwann gelöscht werden)

# 🎜🎜#Leseansicht

Leseansicht ist eine Leseansicht, die erstellt wird, wenn eine Transaktion einen Snapshot-Lesevorgang ausführt In dem Moment, in dem die Transaktion einen Snapshot-Lesevorgang durchführt, wird ein aktueller Snapshot des Datensystems erstellt, die ID der aktuell aktiven Transaktion im System aufgezeichnet und verwaltet, und der ID-Wert der Transaktion erhöht sich.

6. Die Kernidee von MVCC

Die Kernidee von MVCC ist: Ich kann die Daten überprüfen, die vorher existierten Meine Transaktion wurde gestartet, auch wenn sie später geändert oder gelöscht wird. Ich kann die nach meiner Transaktion neu hinzugefügten Daten nicht finden.

MVCC-Suchregeln: Es können nur Daten gefunden werden, deren Erstellungszeit kleiner oder gleich der aktuellen Transaktions-ID ist, und Zeilen, deren Löschzeit größer als die aktuelle Transaktions-ID ist ( oder nicht gelöscht)

Was sind die Wissenspunkte der Parallelitätskontrolle mehrerer Versionen von MySQL MVCC?

Wie in der Abbildung gezeigt, werden zwei Datenelemente in die Transaktion Transaction1 eingefügt, die Transaktion wird übermittelt und dann zwei Datenelemente In der Transaktion Transaction2 werden viele Daten gelesen Gemäß den MVCC-Regeln kann der Anfang meiner Transaktion nicht gefunden werden. Nach dem Einfügen der eingefügten Daten ist die Erstellungs-ID von Laolian größer als 2, sodass nur zwei Daten gefunden werden können

Was sind die Wissenspunkte der Parallelitätskontrolle mehrerer Versionen von MySQL MVCC?

Löschen Sie wie im Bild gezeigt die Daten mit der ID 2 in der Transaktion Transaction4 und lesen Sie sie dann gemäß den MVCC-Regeln Stellen Sie fest, dass Lao Chao nach Beginn meiner Transaktion immer noch die eingefügten und gelöschten Daten herausfinden kann, sodass er immer noch zwei Datenelemente gefunden hat

Was sind die Wissenspunkte der Parallelitätskontrolle mehrerer Versionen von MySQL MVCC?

Wie in der Abbildung gezeigt Abbildung: Fügen Sie einen Namen in Transaktion 5 hinzu = Daten von Bruder Tao, löschen Sie die Daten mit der ID = 1, ändern Sie den Namen = ID von Bruder Tao in 1 und lesen Sie ihn dann in Transaktion 2. Gemäß den MVCC-Regeln können Sie die eingefügten und gelöschten Daten finden Nachdem meine Transaktion gestartet wurde, kann Lao Yan immer noch gefunden werden, daher werden immer noch zwei Daten gefunden

Durch die obige Demonstration können wir das durch die Kontrolle der Versionsnummer sehen, egal ob Wenn andere Transaktionen das Einfügen, Ändern oder Löschen durchführen, werden die von der Transaktion2-Transaktion abgefragten Daten unverändert bleiben.

Das obige ist der detaillierte Inhalt vonWas sind die Wissenspunkte der Parallelitätskontrolle mehrerer Versionen von MySQL MVCC?. 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 man phpmyadmin öffnet Wie man phpmyadmin öffnet Apr 10, 2025 pm 10:51 PM

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

MySQL: Eine Einführung in die beliebteste Datenbank der Welt MySQL: Eine Einführung in die beliebteste Datenbank der Welt Apr 12, 2025 am 12:18 AM

MySQL ist ein Open Source Relational Database Management -System, das hauptsächlich zum schnellen und zuverlässigen Speicher und Abrufen von Daten verwendet wird. Sein Arbeitsprinzip umfasst Kundenanfragen, Abfragebedingungen, Ausführung von Abfragen und Rückgabergebnissen. Beispiele für die Nutzung sind das Erstellen von Tabellen, das Einsetzen und Abfragen von Daten sowie erweiterte Funktionen wie Join -Operationen. Häufige Fehler umfassen SQL -Syntax, Datentypen und Berechtigungen sowie Optimierungsvorschläge umfassen die Verwendung von Indizes, optimierte Abfragen und die Partitionierung von Tabellen.

Mysqls Platz: Datenbanken und Programmierung Mysqls Platz: Datenbanken und Programmierung Apr 13, 2025 am 12:18 AM

Die Position von MySQL in Datenbanken und Programmierung ist sehr wichtig. Es handelt sich um ein Open -Source -Verwaltungssystem für relationale Datenbankverwaltung, das in verschiedenen Anwendungsszenarien häufig verwendet wird. 1) MySQL bietet effiziente Datenspeicher-, Organisations- und Abruffunktionen und unterstützt Systeme für Web-, Mobil- und Unternehmensebene. 2) Es verwendet eine Client-Server-Architektur, unterstützt mehrere Speichermotoren und Indexoptimierung. 3) Zu den grundlegenden Verwendungen gehören das Erstellen von Tabellen und das Einfügen von Daten, und erweiterte Verwendungen beinhalten Multi-Table-Verknüpfungen und komplexe Abfragen. 4) Häufig gestellte Fragen wie SQL -Syntaxfehler und Leistungsprobleme können durch den Befehl erklären und langsam abfragen. 5) Die Leistungsoptimierungsmethoden umfassen die rationale Verwendung von Indizes, eine optimierte Abfrage und die Verwendung von Caches. Zu den Best Practices gehört die Verwendung von Transaktionen und vorbereiteten Staten

Warum MySQL verwenden? Vorteile und Vorteile Warum MySQL verwenden? Vorteile und Vorteile Apr 12, 2025 am 12:17 AM

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.

So stellen Sie eine Verbindung zur Datenbank von Apache her So stellen Sie eine Verbindung zur Datenbank von Apache her Apr 13, 2025 pm 01:03 PM

Apache verbindet eine Verbindung zu einer Datenbank erfordert die folgenden Schritte: Installieren Sie den Datenbanktreiber. Konfigurieren Sie die Datei web.xml, um einen Verbindungspool zu erstellen. Erstellen Sie eine JDBC -Datenquelle und geben Sie die Verbindungseinstellungen an. Verwenden Sie die JDBC -API, um über den Java -Code auf die Datenbank zuzugreifen, einschließlich Verbindungen, Erstellen von Anweisungen, Bindungsparametern, Ausführung von Abfragen oder Aktualisierungen und Verarbeitungsergebnissen.

So starten Sie MySQL von Docker So starten Sie MySQL von Docker Apr 15, 2025 pm 12:09 PM

Der Prozess des Startens von MySQL in Docker besteht aus den folgenden Schritten: Ziehen Sie das MySQL -Image zum Erstellen und Starten des Containers an, setzen

CentOS installieren MySQL CentOS installieren MySQL Apr 14, 2025 pm 08:09 PM

Die Installation von MySQL auf CentOS umfasst die folgenden Schritte: Hinzufügen der entsprechenden MySQL Yum -Quelle. Führen Sie den Befehl mySQL-server aus, um den MySQL-Server zu installieren. Verwenden Sie den Befehl mySQL_SECURE_INSTALLATION, um Sicherheitseinstellungen vorzunehmen, z. B. das Festlegen des Stammbenutzerkennworts. Passen Sie die MySQL -Konfigurationsdatei nach Bedarf an. Tune MySQL -Parameter und optimieren Sie Datenbanken für die Leistung.

MySQLs Rolle: Datenbanken in Webanwendungen MySQLs Rolle: Datenbanken in Webanwendungen Apr 17, 2025 am 12:23 AM

Die Hauptaufgabe von MySQL in Webanwendungen besteht darin, Daten zu speichern und zu verwalten. 1.Mysql verarbeitet effizient Benutzerinformationen, Produktkataloge, Transaktionsunterlagen und andere Daten. 2. Durch die SQL -Abfrage können Entwickler Informationen aus der Datenbank extrahieren, um dynamische Inhalte zu generieren. 3.Mysql arbeitet basierend auf dem Client-Server-Modell, um eine akzeptable Abfragegeschwindigkeit sicherzustellen.

See all articles