suchen
HeimDatenbankMySQL-TutorialDetaillierte Erläuterung der MySQL-Datenbanktransaktionen und der Speicher-Engine

Detaillierte Erläuterung der MySQL-Datenbanktransaktionen und der Speicher-Engine

1. Relationale Datenbanken und nicht-relationale Datenbanken

1 🎜>

1) Die Daten erscheinen in Form einer Tabelle

2) Jede Zeile hat verschiedene Datensatznamen

3) Das Datenfeld, das dem Datensatznamen in jeder Spalte entspricht

4) Viele Zeilen und Spalten bilden ein Formular

5) Mehrere Formulare bilden eine Datenbank

2. Vorteile einer relationalen Datenbank:

1) Komplexe Abfragen: Zur Vereinfachung können SQL-Anweisungen verwendet werden Führen Sie sehr komplexe Datenabfragen zwischen einer Tabelle und mehreren Tabellen durch.

2) Transaktionsunterstützung: ermöglicht die Umsetzung von Datenzugriffsanforderungen mit hoher Sicherheitsleistung.

3. Vorteile nicht relationaler Datenbanken:

1) Leistung: NOSQL basiert auf Schlüssel-Wert-Paaren, die man sich vorstellen kann als Tabellen Die entsprechende Beziehung zwischen dem Primärschlüssel und dem Wert muss nicht von der SQL-Schicht analysiert werden, sodass die Leistung sehr hoch ist.

2) Skalierbarkeit: Da es auf Schlüssel-Wert-Paaren basiert, gibt es keine Kopplung zwischen den Daten, sodass eine horizontale Erweiterung sehr einfach ist.

Frage: Was sind die Unterschiede zwischen den drei traditionellen Datenbanken?

Antwort: Die drei basieren auf der Verbindung zwischen Daten. Die hierarchische Datenbank hat eine Baumstruktur und die Netzwerkdatenbank hat eine relationale Datenbank -dimensionale Tabellenstruktur.

2. Transaktion (ACID)

Eine Transaktion ist eine Reihe von Transaktionen, die als eine einzige logische Einheit ausgeführt werden Arbeitsvorgänge: Diese Vorgänge werden als Ganzes an das System übermittelt und entweder alle oder keiner von ihnen ausgeführt. Eine Transaktion ist eine unteilbare logische Arbeitseinheit.

Transaktionen müssen die folgenden vier Attribute aufweisen, die als ACID-Attribute bezeichnet werden:

Atomizität (Atomizität) : Eine Transaktion ist ein vollständiger Vorgang. Jede Operation einer Sache ist untrennbar (atomar); entweder werden alle ausgeführt oder keine ausgeführt

Konsistenz (Konsistenz) : Wenn die Transaktion abgeschlossen ist, werden Daten ausgeführt muss in einem konsistenten Zustand sein;

Isolation (Isolation) : Alle gleichzeitigen Transaktionen, die die Daten ändern, sind voneinander isoliert, was darauf hinweist, dass Transaktionen unabhängig sein müssen , es sollte in keiner Weise von anderen Transaktionen abhängen oder diese beeinflussen;

Dauerhaftigkeit (Dauerhaftigkeit) : Nach Abschluss der Transaktion sind ihre Änderungen an der Datenbank dauerhaft Das Transaktionsprotokoll kann die Persistenz von Transaktionen aufrechterhalten.

Isolationsebene der Transaktion:

Nicht festgeschriebene Inhalte lesen (auch Dirty Read Read Uncommitted genannt): Bedeutet, dass alle Transaktionen die Ausführungsergebnisse anderer nicht festgeschriebener Transaktionen sehen können. Es kann zu Dirty-Read-, nicht wiederholbaren Lese- und Phantom-Read-Problemen kommen.

Festgeschriebenen Inhalt lesen (festgeschrieben lesen): Eine Transaktion kann nur Änderungen sehen, die von festgeschriebenen Transaktionen vorgenommen wurden. Dirty Reads können vermieden werden und es kann zu Problemen mit nicht wiederholbaren Reads und Phantom Reads kommen.

Wiederholbares Lesen (wiederholbares Lesen): Dies ist die Standard-Transaktionsisolationsstufe von MySQL. Sie stellt sicher, dass mehrere Instanzen derselben Transaktion gleichzeitig Daten lesen werden die gleichen Datenzeilen sehen. Schmutzige Lesevorgänge und nicht wiederholbare Lesevorgänge können vermieden werden, und es kann zu Phantom-Lesevorgängen kommen.

Serialisierbar (serialisierbar): Es ist die höchste Isolationsstufe, die jeder gelesenen Datenzeile eine gemeinsame Sperre hinzufügt, um zu verhindern, dass sie gelesen wird gegenseitig und lösen so das Phantomleseproblem. Dirty Reads, nicht wiederholbare Reads und Phantom Reads können vermieden werden.

Probleme durch gleichzeitige Transaktionen:

1 Update verloren : Zwei Transaktionen T1 und T2 haben dieselben Daten gelesen und geändert. Das von T2 übermittelte Ergebnis überschreibt das von T1 übermittelte Ergebnis, wodurch die Änderung von T1 verloren geht.

2. Dirty Read: Transaktion T1 hat bestimmte Daten geändert und auf die Festplatte zurückgeschrieben. Nachdem Transaktion T2 dieselben Daten gelesen hat, hat T1 einige Probleme Der Grund wird widerrufen. Zu diesem Zeitpunkt werden die von T2 gelesenen Daten auf ihren ursprünglichen Wert zurückgesetzt. Dann sind die von T2 gelesenen Daten „schmutzige“ Daten Daten.

3. Nicht wiederholbares Lesen : bezieht sich auf das mehrmalige Lesen derselben Daten innerhalb einer Transaktion. Bevor diese Transaktion beendet wurde, hat eine andere Transaktion ebenfalls auf dieselben Daten zugegriffen. 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. Dies bedeutet, dass die von derselben Abfrage innerhalb einer Transaktion zweimal gelesenen Daten unterschiedlich sind und daher als nicht wiederholbarer Lesevorgang bezeichnet werden.

4. Phantomlesung : Beispiel: Es gibt derzeit 10 Mitarbeiter mit einem Gehalt von 5.000. Transaktion A liest alle 10 Mitarbeiter mit einem Gehalt von 5.000. Zu diesem Zeitpunkt hat Transaktion B einen Datensatz mit einem Gehalt von 5.000 eingefügt. Zu diesem Zeitpunkt liest Transaktion A erneut die Mitarbeiter mit einem Gehalt von 5.000, und der Datensatz ist 11. Zu diesem Zeitpunkt erfolgt eine Phantomlesung.

Was ist der Unterschied zwischen nicht wiederholbarem Lesen und Phantomlesen? Der Schwerpunkt des nicht wiederholbaren Lesens liegt auf der Änderung, und der Schwerpunkt des Phantomlesens liegt auf dem Hinzufügen oder Löschen.

MVCC (Mehrversions-Parallelitätskontrollmechanismus): InnoDBs MVCC wird nach jeder Zeile von Datensätzen übergeben Dies wird durch das Speichern von zwei ausgeblendeten Spalten erreicht. Die Erstellungszeit der Zeile und die Löschzeit der Zeile werden jeweils gespeichert (hier wird nicht der tatsächliche Zeitwert, sondern die Systemversionsnummer gespeichert). Bei jedem Start einer neuen Transaktion wird die Systemversionsnummer automatisch erhöht. Die Systemversionsnummer zu Beginn der Transaktion wird als Transaktions-ID zum Vergleich mit der Versionsnummer jeder abgefragten Datensatzzeile verwendet. Nach der Verwendung von MVCC treten unter der wiederholbaren Leseisolationsstufe keine Phantomlesevorgänge auf.

3. Speicher-Engine

Die Speicher-Engine ist die zugrunde liegende Softwareorganisation der Datenbank Engine zum Erstellen, Abfragen, Aktualisieren und Löschen von Daten.

1. InnoDB (Clustered-Index-Methode)

Die zugrunde liegende Speicherstruktur von innodb ist ein B+-Baum, und jeder Knoten des Baums entspricht Für eine Seite von innodb ist die Seitengröße festgelegt und im Allgemeinen auf 16 KB festgelegt. Die Nicht-Blattknoten haben nur Schlüsselwerte und die Blattknoten enthalten vollständige Daten.

Verwendungsszenarien: 1) Häufig aktualisierte Tabellen, die mehrere gleichzeitige Aktualisierungsanforderungen verarbeiten

2) Unterstützung transaktionssicherer Tabellen (ACID), unterstützt Zeilensperren und Fremdschlüssel;

3) Kann über Bin-Log-Protokolle usw. wiederhergestellt werden.

innodb, wenn kein Primärschlüssel vorhanden ist gesetzt, Es wird automatisch ein 6-Byte-Primärschlüssel generiert (für den Benutzer nicht sichtbar).

2. MyISAM (nicht gruppierte Indexmethode)

MyISAM war die Standardspeicher-Engine von MySQL vor 5.1, bei der die Leistung im Vordergrund stand. Es unterstützt jedoch weder Transaktionen noch Zeilensperren und Fremdschlüssel. Beim Einfügen oder Aktualisieren von Daten muss die gesamte Tabelle gesperrt werden, und die Effizienz ist geringer. Es wird nur der Index zwischengespeichert, nicht die echten Daten. MyISAM liest Daten sehr schnell und belegt nicht viel Speicher und Speicherressourcen.

MyISAM erlaubt die Existenz eines Primärschlüssels und ist eine statische Indexstruktur.

Frage: Was ist der Unterschied zwischen MyISAM und InnoDB in MySQL?

Antwort: In der MySQL-Datenbank sind die beiden am häufigsten verwendeten Engines innodb und myisam. InnoDB ist derzeit die Standardspeicher-Engine für MySQL.

1) Transaktionen: MyISAM legt Wert auf Leistung und die Abfragegeschwindigkeit ist schneller als beim InnoDB-Typ, unterstützt jedoch keine Transaktionen. InnoDB bietet Transaktionsunterstützung.

2) Fremdschlüssel: MyISAM unterstützt keine Fremdschlüssel, InnoDB unterstützt jedoch Fremdschlüssel.

3) Sperren: InnoDB unterstützt nur Sperren auf Tabellenebene und Sperren auf Tabellenebene verbessern die Leistung erheblich der gleichzeitigen Leistung mehrerer Benutzer. innodb eignet sich besser für Situationen mit vielen Einfüge- und Aktualisierungsvorgängen, während myisam für Situationen mit häufigen Abfragen geeignet ist. Darüber hinaus ist die Zeilensperre der Innodb-Tabelle nicht absolut. Wenn MySQL beim Ausführen einer SQL-Anweisung den zu scannenden Bereich nicht ermitteln kann, sperrt Innodb auch die gesamte Tabelle, zum Beispiel: update table set num=1 where name like „. %aaa% ".

4) Volltextindex: MyISAM unterstützt den Volltextindex, Innodb unterstützt keinen Volltextindex. innodb bietet Volltextindexunterstützung ab MySQL 5.6.

5) Tabellenprimärschlüssel: Myisam lässt die Existenz von Tabellen ohne Primärschlüssel zu. innodb: Wenn der Primärschlüssel nicht festgelegt ist, wird automatisch ein 6-Byte-Primärschlüssel generiert (unsichtbar für des Benutzers).

6) Die spezifische Anzahl der Zeilen in der Tabelle: myisam: select count(*) from table, myisam liest einfach die Anzahl der gespeicherten Zeilen. Da myisam über einen integrierten Zähler verfügt, liest es beim Zählen(*) direkt vom Zähler.

innodb: speichert nicht die spezifische Anzahl von Zeilen in der Tabelle. Das heißt, wenn Sie select count(*) from table ausführen, durchsucht innodb die gesamte Tabelle, um zu berechnen, wie viele Zeilen vorhanden sind.

Empfohlenes Lernen: MySQL-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der MySQL-Datenbanktransaktionen und der Speicher-Engine. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:cnblogs. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Erläutern Sie den InnoDB -Pufferpool und seine Bedeutung für die Leistung.Erläutern Sie den InnoDB -Pufferpool und seine Bedeutung für die Leistung.Apr 19, 2025 am 12:24 AM

InnoDbbufferpool reduziert die Scheiben -E/A durch Zwischenspeicherung von Daten und Indizieren von Seiten und Verbesserung der Datenbankleistung. Das Arbeitsprinzip umfasst: 1. Daten lesen: Daten von Bufferpool lesen; 2. Daten schreiben: Schreiben Sie nach der Änderung der Daten an Bufferpool und aktualisieren Sie sie regelmäßig auf Festplatte. 3. Cache -Management: Verwenden Sie den LRU -Algorithmus, um Cache -Seiten zu verwalten. 4. Lesemechanismus: Last benachbarte Datenseiten im Voraus. Durch die Größe des Bufferpool und die Verwendung mehrerer Instanzen kann die Datenbankleistung optimiert werden.

MySQL gegen andere Programmiersprachen: Ein VergleichMySQL gegen andere Programmiersprachen: Ein VergleichApr 19, 2025 am 12:22 AM

Im Vergleich zu anderen Programmiersprachen wird MySQL hauptsächlich zum Speichern und Verwalten von Daten verwendet, während andere Sprachen wie Python, Java und C für die logische Verarbeitung und Anwendungsentwicklung verwendet werden. MySQL ist bekannt für seine hohe Leistung, Skalierbarkeit und plattformübergreifende Unterstützung, die für Datenverwaltungsanforderungen geeignet sind, während andere Sprachen in ihren jeweiligen Bereichen wie Datenanalysen, Unternehmensanwendungen und Systemprogramme Vorteile haben.

Lernen von MySQL: Eine Schritt-für-Schritt-Anleitung für neue BenutzerLernen von MySQL: Eine Schritt-für-Schritt-Anleitung für neue BenutzerApr 19, 2025 am 12:19 AM

MySQL ist es wert, gelernt zu werden, da es sich um ein leistungsstarkes Open -Source -Datenbankverwaltungssystem handelt, das für Datenspeicher, Verwaltung und Analyse geeignet ist. 1) MySQL ist eine relationale Datenbank, die SQL zum Betrieb von Daten verwendet und für die strukturierte Datenverwaltung geeignet ist. 2) Die SQL -Sprache ist der Schlüssel zur Interaktion mit MySQL und unterstützt CRUD -Operationen. 3) Das Arbeitsprinzip von MySQL umfasst Client/Server -Architektur, Speicher -Engine und Abfrageoptimierer. 4) Die grundlegende Nutzung umfasst das Erstellen von Datenbanken und Tabellen, und die erweiterte Verwendung umfasst das Verbinden von Tabellen mit dem Join. 5) Zu den häufigen Fehlern gehören Syntaxfehler und Erlaubnisprobleme, und die Debugging -Fähigkeiten umfassen die Überprüfung der Syntax und die Verwendung von Erklärungskenntnissen. 6) Die Leistungsoptimierung umfasst die Verwendung von Indizes, die Optimierung von SQL -Anweisungen und die regelmäßige Wartung von Datenbanken.

MySQL: Wesentliche Fähigkeiten für Anfänger zu meisternMySQL: Wesentliche Fähigkeiten für Anfänger zu meisternApr 18, 2025 am 12:24 AM

MySQL ist für Anfänger geeignet, um Datenbankfähigkeiten zu erlernen. 1. Installieren Sie MySQL Server- und Client -Tools. 2. Verstehen Sie grundlegende SQL -Abfragen, wie z. B. SELECT. 3.. Stammdatenoperationen: Daten erstellen, Daten einfügen, aktualisieren und löschen. 4. Lernen Sie fortgeschrittene Fähigkeiten: Unterabfragen und Fensterfunktionen. 5. Debugging und Optimierung: Überprüfen Sie die Syntax, verwenden Sie Indizes, vermeiden Sie die Auswahl*und verwenden Sie die Grenze.

MySQL: Strukturierte Daten und relationale DatenbankenMySQL: Strukturierte Daten und relationale DatenbankenApr 18, 2025 am 12:22 AM

MySQL verwaltet strukturierte Daten effizient durch Tabellenstruktur und SQL-Abfrage und implementiert Inter-Tisch-Beziehungen durch Fremdschlüssel. 1. Definieren Sie beim Erstellen einer Tabelle das Datenformat und das Typ. 2. Verwenden Sie fremde Schlüssel, um Beziehungen zwischen Tabellen aufzubauen. 3.. Verbessern Sie die Leistung durch Indexierung und Abfrageoptimierung. 4. regelmäßig Sicherung und Überwachung von Datenbanken, um die Datensicherheit und die Leistungsoptimierung der Daten zu gewährleisten.

MySQL: Schlüsselmerkmale und Funktionen erklärtMySQL: Schlüsselmerkmale und Funktionen erklärtApr 18, 2025 am 12:17 AM

MySQL ist ein Open Source Relational Database Management -System, das in der Webentwicklung häufig verwendet wird. Zu den wichtigsten Funktionen gehören: 1. unterstützt mehrere Speichermotoren wie InnoDB und MyISAM, geeignet für verschiedene Szenarien; 2. Bietet Master-Slave-Replikationsfunktionen, um Lastausgleich und Datensicherung zu erleichtern. 3.. Verbessern Sie die Abfrageeffizienz durch Abfrageoptimierung und Index.

Der Zweck von SQL: Interaktion mit MySQL -DatenbankenDer Zweck von SQL: Interaktion mit MySQL -DatenbankenApr 18, 2025 am 12:12 AM

SQL wird verwendet, um mit der MySQL -Datenbank zu interagieren, um die Datenzusatz, Löschung, Änderung, Inspektion und Datenbankdesign zu realisieren. 1) SQL führt Datenoperationen über SELECT, INSERT, INTERATE, UPDATE, Löschen von Anweisungen durch. 2) Verwenden Sie Anweisungen für Datenbankdesign und -verwaltung create, ändern, fallen. 3) Komplexe Abfragen und Datenanalysen werden über SQL implementiert, um die Effizienz der Geschäftsentscheidungen zu verbessern.

MySQL für Anfänger: Erste Schritte mit der DatenbankverwaltungMySQL für Anfänger: Erste Schritte mit der DatenbankverwaltungApr 18, 2025 am 12:10 AM

Zu den grundlegenden Operationen von MySQL gehört das Erstellen von Datenbanken, Tabellen und die Verwendung von SQL zur Durchführung von CRUD -Operationen für Daten. 1. Erstellen Sie eine Datenbank: createdatabasemy_first_db; 2. Erstellen Sie eine Tabelle: CreateTableBooks (IDINGAUTO_INCRECTIONPRIMARYKEY, Titelvarchar (100) Notnull, AuthorVarchar (100) Notnull, veröffentlicht_yearint); 3.. Daten einfügen: InsertIntoBooks (Titel, Autor, veröffentlicht_year) va

See all articles

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

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)