


Was sind die Wissenspunkte der Parallelitätskontrolle mehrerer Versionen von 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 FelderZusä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_ID6 Bytes, die zuletzt geänderte Transaktions-ID, zeichnen die Transaktions-ID auf, die diesen Datensatz erstellt oder zuletzt geändert hat. 🎜 🎜#DB_ROLL_PTR7 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_JD6 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为true
undolog 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 MVCCDie 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)
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
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

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 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.

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

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.

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.

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

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.

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.
