MySQL-Datenbankindizes und -Transaktionen

MySQL-Datenbankindizes und -Transaktionen

1. Inhaltsverzeichnis

1.1 Konzept

  • Ein Index ist eine dezentrale Speicherstruktur, die erstellt wird, um das Abrufen von Datenzeilen in einer Tabelle zu beschleunigen. Für eine Tabelle wird ein Index erstellt. Er besteht aus Indexseiten, die keine Datenseiten sind. Jede Zeile auf einer Indexseite enthält einen logischen Zeiger, um das Abrufen physischer Daten zu beschleunigen.
  • Im Datenbankdiagramm können Sie jeden Indextyp auf der Eigenschaftenseite „Indizes/Schlüssel“ für die ausgewählte Tabelle erstellen, bearbeiten oder löschen. Ein Index wird in der Datenbank gespeichert, wenn Sie die Tabelle speichern, an die er angehängt ist, oder wenn Sie das Beziehungsdiagramm speichern, in dem sich die Tabelle befindet.

Einfach ausgedrückt ähnelt die Beziehung zwischen Indizes und Tabellen und Daten in einer Datenbank der Beziehung zwischen Büchern (Tabellen), Buchinhalten (Daten) und Buchkatalogen (Indizes) in einem Bücherregal.

1.2 Funktion

Das Erstellen von Indizes in einem Datenbanksystem hat folgende Hauptfunktionen:

  • Schneller Datenabruf
  • Sicherstellung der Eindeutigkeit von Datensätzen
  • Implementieren Sie referenzielle Integrität zwischen Tabellen
  • 在使用order by、 , kann die Verwendung von Indizes den Zeitaufwand für das Sortieren und Gruppieren reduzieren.

1.3 Grundsätze der Indizierung

1.3.1 Die Reduzierung der Anzahl der Festplattenzugriffe ist die Kernidee beim Erstellen eines Index

Der Zweck eines Index besteht darin, Abfragen zu erleichtern.
MySQL-Abfragen sind hauptsächlich select . Der grundlegende Ausführungsprozess select umfasst das Durchlaufen der Tabelle, das Herausnehmen jedes Datensatzes nacheinander und das Filtern gemäß den Bedingungen der Where-Klausel. Da MySQL Daten auf der Festplatte speichert, bedeutet bei Abfragen jeder Datensatz einen Zugriff auf die Festplatte. Die Zugriffseffizienz von IO-Geräten auf die Festplatte ist viel geringer als die auf den Speicher. Daher kann die Effizienz von Abfragen durch die Reduzierung der Anzahl der Festplattenzugriffe verbessert werden, was die Kernidee beim Erstellen von Indizes ist.

1.3.2 B + Tree eignet sich zur Implementierung des zugrunde liegenden Index

Die Reduzierung der Anzahl der Datenzugriffe ist ein wichtiger Aspekt bei der Implementierung der Indizierung. Als Nächstes werden wir mehrere Datenstrukturen analysieren, um eine geeignetere Datenstruktur für die Implementierung der Indizierung zu finden.

Binärer Suchbaum:

Da der binäre Suchbaum ein einzweigiger Baum sein kann, beträgt die zeitliche Komplexität O(N).

AVL-Baum:

  • Der AVL-Baum ist im Wesentlichen ein binärer ausgeglichener Suchbaum, der eine Verbesserung des binären Suchbaums darstellt. Er stellt sicher, dass der Höhenunterschied zwischen dem linken und rechten Teilbaum 1 nicht überschreitet, d. h. es gibt keine einzweigige Baumstruktur und die Suchzeitkomplexität beträgt O (logN).
  • Da der Höhenunterschied zwischen dem linken und rechten Teilbaum 1 nicht überschreiten darf, zerstören Einfüge- oder Löschvorgänge die Struktur des AVL-Baums. Daher muss der Baum jederzeit angepasst werden. Obwohl die Abfrageeffizienz erreicht wird, wird die Effizienz der Einfüge- und Löschvorgänge verringert und die zeitliche Komplexität des Einfügens und Löschens beträgt O (logN).

Rot-Schwarzer Baum:

  • Der Rot-Schwarz-Baum ist im Wesentlichen ein AVL-Baum mit lockeren Regeln, d. h. er erzwingt nicht, dass der Höhenunterschied zwischen dem linken und rechten Teilbaum nicht mehr als 1 beträgt, wodurch die Anforderungen zur Gewährleistung der Effizienz von Einfüge- und Löschvorgängen verringert werden.
  • Der Gesamtunterschied zwischen dem AVL-Baum und der Komplexität der Abfrage-, Einfüge- und Löschzeit beträgt O(logN).

Hash-Tabelle:

  • Die Zeitkomplexität einer Hash-Tabelle für Abfrage, Einfügen und Löschen beträgt O(1).
  • Einer der wesentlichen Punkte der Hash-Tabelle besteht jedoch darin, dass sie auf Gleichheit verglichen werden muss, Bedingungen wie „größer als“ oder „kleiner als“ jedoch nicht erreicht werden können, was nicht der tatsächlichen Abfragesituation entspricht.

Bisher scheint es, dass nur AVL-Bäume oder Rot-Schwarz-Bäume für die Implementierung von MySQL-Indizes besser geeignet sind. Die Sucheffizienz dieser beiden Datenstrukturen wird direkt durch die Höhe des Baums bestimmt. Wenn also die Daten zunehmen, nimmt auch die Höhe des Baums zu.

Zur weiteren Optimierung können Sie einen N-ären Suchbaum verwenden, um die Höhe des Baums zu reduzieren, d. h. die Festplatten-E/A zu verringern und so die Suchleistung zu verbessern.

B-Baum:

B-Baum ist eine Art N-ärer Suchbaum

Beispielstruktur eines B-Baums:

Bildbeschreibung hier einfügen

In Indizes verwendet, stellt jeder Knoten einen Datensatz dar

Eigenschaften des B-Baums:

  • Jeder Knoten kann N Teilbäume enthalten
  • Jeder Knoten kann mehrere Werte haben.
  • Die Werte des linken Teilbaums sind alle kleiner als der entsprechende Wert des Wurzelknotens, und die Werte des rechten Teilbaums sind alle größer als der entsprechende Wert des Wurzelknotens

B+ Baum:

Der B+-Baum ist ein spezieller N-ärer Suchbaum, eine verbesserte Version des B-Baums.

Beispielstruktur eines B+-Baumes:

Bildbeschreibung hier einfügen

Verbesserungen des B+-Baums gegenüber dem B-Baum:

  • Blattknoten speichern jede Datensatzzeile, und Nicht-Blattknoten müssen nur den Indexwert jeder Zeile speichern.
  • Die Werte von Nicht-Blattknoten werden wiederholt, wodurch die Blattknotenebene zu einem vollständigen Datensatz wird.
  • Alle Blattknoten können ähnlich einer verknüpften Liste verbunden werden.

Vorteile von B+ Tree:

  • Gut bei der Suche im Umkreis
  • Da alle Abfragen auf Blattknoten fallen, ist die Abfragegeschwindigkeit relativ stabil
  • Da die Blattknoten den vollständigen Datensatz darstellen, können die Blattknoten auf der Festplatte und die Nicht-Blattknoten direkt im Speicher gespeichert werden, wodurch die Anzahl der Festplattenlesevorgänge erheblich reduziert wird.

1.4 Anwendbare Szenarien

  • Die Anzahl der Suchvorgänge ist relativ hoch, während die Anzahl der Einfügungen und Löschungen relativ gering ist. Daher bietet sich die Verwendung von Indizes an.
  • Da der Index selbst auch eine gewisse Menge an Platz beansprucht, ist die Verwendung des Indexes bei kleiner Datenträgerkapazität nicht sinnvoll.
  • Ein Index wird durch Angabe einer Spalte erstellt. Wenn eine Spalte einen hohen Unterscheidungsgrad aufweist, ist die Verwendung eines Indexes, beispielsweise eines automatisch inkrementierten Primärschlüssels, sinnvoll.

1.5 Nutzungshinweise

Auffüllen:

Beim Erstellen primary key , einer eindeutigen Einschränkung oder einer Fremdschlüsseleinschränkung wird automatisch ein Index für die entsprechende Spalte erstellt.

1.5.1 Index anzeigen

Grammatik:

Index vom Tabellennamen anzeigen;

Beispiel:

Bildbeschreibung hier einfügen

1.5.2 Erstellen eines Indexes

Grammatik:

Erstellen Sie einen Index mit Indexnamen für den Tabellennamen (Feldnamen).

Beispiel:

Bildbeschreibung hier einfügen

1.5.3 Löschen eines Indexes

Grammatik:

Index-Indexnamen auf Tabellennamen löschen;

Beispiel:

Bildbeschreibung hier einfügen

Beachten:

Der Primärindex kann nicht gelöscht werden und beim Löschen wird ein Fehler gemeldet.

2. Transaktionen

2.1 Konzept

Dinge: Dies ist ein sehr weit gefasster Begriff in der Computertechnik und bezieht sich im Allgemeinen auf Dinge, die zu tun sind oder erledigt werden müssen. In einer relationalen Datenbank kann eine Transaktion eine SQL-Anweisung, eine Gruppe von SQL-Anweisungen oder ein ganzes Programm sein.

Um es einfach auszudrücken: Wenn beispielsweise A bei einer Banküberweisung 500 Yuan an B überweist, umfasst diese Operation eigentlich zwei Vorgänge: Der Kontostand von A verringert sich um 500 Yuan und der Kontostand von B erhöht sich um 500 Yuan.

Die Dinge entsprechen dem Zusammenfassen dieser Reihe von Aktionen zu einem Ganzen, entweder indem man nichts tut oder indem man alles tut.

2.2 Warum Transaktionen verwenden?

Nehmen wir das obige Beispiel einer Banküberweisung an und gehen davon aus, dass die Abbuchung von 500 Yuan vom Konto A erfolgreich ist, die Gutschrift von 500 Yuan vom Konto B jedoch nicht erfolgreich ist. In diesem Fall ist die Überweisung fehlgeschlagen.

Die Kerneigenschaft von Dingen besteht darin, eine Reihe von Vorgängen zu einem Ganzen zusammenzufassen, das entweder alle oder nichts umfasst.

Nichts tun bedeutet: Wenn eine Operation fehlschlägt, wird der damalige Zwischenzustand heimlich wiederhergestellt

Daher kann durch die Verwendung von Dingen sichergestellt werden, dass eine Reihe von Vorgängen nicht nur teilweise, sondern entweder vollständig oder überhaupt nicht abgeschlossen wird.

2.3 Vier Hauptattribute

Eine Transaktion ist die Grundeinheit der Wiederherstellung und Parallelitätskontrolle. Sie hat vier Eigenschaften: Atomarität, Konsistenz, Persistenz und Isolation.

Im Mittelpunkt steht die Atomizität

2.3.1 Atomizität

Konzept:

Eine Transaktion ist eine unteilbare Arbeitseinheit. Die in der Transaktion enthaltenen Vorgänge werden entweder alle oder keiner ausgeführt.

Der Kern der Dinge ist die Atomizität, der Kern der Atomizität besteht darin, in den Zwischenzustand zurückzukehren, der Kern des Zurückrollens in den Zwischenzustand ist das Rollback, und der Kern des Rollbacks besteht darin, sich an jeden Schritt der Operation zu erinnern

2.3.2 Konsistenz

Konzept:

Eine Transaktion muss die Datenbank von einem konsistenten Zustand in einen anderen konsistenten Zustand ändern. Konsistenz und Atomarität hängen eng zusammen.

Vor und nach der Ausführung einer Transaktion befinden sich die Daten in der aktuellen Tabelle in einem angemessenen Zustand

2.3.3 Persistenz

Konzept:

Persistenz (auch permanence genannt) bedeutet, dass die an den Daten in der Datenbank vorgenommenen Änderungen einer Transaktion dauerhaft sein sollten, sobald sie festgeschrieben ist. Nachfolgende andere Operationen oder Störungen sollten hierauf keinen Einfluss haben.

Die Daten der Transaktionsvorgänge werden direkt auf der Festplatte verarbeitet und die Daten auf der Festplatte bleiben dauerhaft.

2.3.4 Isolierung

Konzept:

Die Ausführung einer Transaktion kann nicht durch andere Transaktionen gestört werden. Das heißt, die innerhalb einer Transaktion verwendeten Vorgänge und Daten sind von anderen gleichzeitigen Transaktionen isoliert, und gleichzeitig ausgeführte Transaktionen können sich nicht gegenseitig stören.

2.4 Nutzung

Offene Dinge:

Transaktion starten;


Ausführen mehrerer SQL-Anweisungen

Rollback oder Commit

- Rollback: Zeigt an, dass das Rollback aller oben genannten SQL-Anweisungen fehlschlägt.

-- Senden: Zeigt an, dass alle oben genannten SQL-Anweisungen erfolgreich übermittelt wurden.

Dies ist das Ende dieses Artikels über MySQL-Datenbankindizes und -Transaktionen. Weitere relevante MySQL-Indizes und -Transaktionen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung zum Sperren, Entsperren und Löschen von Transaktionen in MySQL-Datenbanktabellen
  • Beispiel-Tutorial für MySQL-Datenbanktransaktionen
  • Detaillierte Erklärung der Transaktionen und Indizes in der MySQL-Datenbank
  • Golang implementiert die Übermittlung und das Rollback von MySQL-Datenbanktransaktionen
  • Detaillierte Analyse von MySQL-Datenbanktransaktionen und -Sperren
  • Detaillierte Erklärung von Dirty Read, Phantom Read und Non-Repeatable Read in MySQL-Datenbanktransaktionen

<<:  Installieren Sie Ethereum/Ethereum von Grund auf unter CentOS7

>>:  HTML realisiert Echtzeit-Überwachungsfunktion der Hikvision-Kamera

Artikel empfehlen

Implementierung des React-Konfigurations-Subroutings

1. Die Komponente First.js hat Unterkomponenten: ...

Detaillierte Erklärung zur Verwendung des Alias-Befehls unter Linux

1. Verwendung von Pseudonymen Mit dem Alias-Befeh...

Erstellen der Benutzererfahrung

<br />Vielleicht sind Sie gerade in ein Unte...

Mehrere Möglichkeiten zum Ausblenden von HTML-Elementen

1. CSS verwenden Code kopieren Der Code lautet wie...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.6.22

In diesem Tutorial wird der spezifische Code der ...

Detaillierte Erklärung der Lösung zum Vergessen des Passworts in MySQL 5.7

Umwelt: [root@centos7 ~]# uname -r 3.10.0-514.el7...

Lösung für den internen Serverfehler Nginx 500

Als ich heute Nginx verwendete, trat ein 500-Fehl...

Detaillierte grundlegende Operationen an Datentabellen in der MySQL-Datenbank

Inhaltsverzeichnis 1. Zeigen Sie die Tabellen in ...

Fallstudie zu JavaScript-Funktionsaufrufen, Apply- und Bind-Methoden

Zusammenfassen 1. Ähnlichkeiten Beide können den ...