Das Clustering ist eigentlich relativ zur InnoDB-Datenbank-Engine. Daher verwenden wir beim Clustering von Indizes die beiden MySQL-Datenbank-Engines InnoDB und MyISAM. Vergleich der Datenverteilung zwischen InnoDB und MyISAM CREATE TABLE-Test (col1 int NOT NULL, col2 int NICHT NULL, PRIMÄRSCHLÜSSEL(Spalte1), SCHLÜSSEL(Spalte2)); Erstellen Sie zunächst mit der obigen SQL-Anweisung eine Tabelle, wobei col1 der Primärschlüssel ist und Indizes für beide Datenspalten erstellt werden. Dann beträgt der Primärschlüsselwert unserer Daten 1-10000 und wird in zufälliger Reihenfolge in die Datenbank eingefügt. MyISAM-Datenverteilung Die Datenspeicherlogik von MyISAM ist relativ einfach: Sie besteht darin, eine Datentabelle in der Reihenfolge zu erstellen, in der die Daten eingefügt werden. Intuitiv wird folgende Abbildung angezeigt: Es ist ersichtlich, dass die Daten „zeilenweise“ in der Reihenfolge der Einfügung generiert werden. Davor befindet sich außerdem ein Zeilennummernfeld, mit dem der Zeilenindex schnell gefunden werden kann, wenn der Index gefunden wurde. Schauen wir uns die Einzelheiten an: Die obige Abbildung zeigt die spezifische Implementierung des gemäß dem Primärschlüssel unter der MyISAM-Engine erstellten Indexes. Es ist ersichtlich, dass die Primärschlüssel zwar in der Reihenfolge auf den Blattknoten angeordnet sind, die Knoten aber auch die spezifische Zeilennummer des Primärschlüssels in der Datenbanktabelle speichern. Wie oben erwähnt, kann uns diese Zeilennummer dabei helfen, die Position der Daten in der Tabelle schnell zu lokalisieren. Diese Zeilennummer kann auch als Zeiger verstanden werden, der auf die spezifische Datenzeile zeigt, in der sich der Primärschlüssel befindet. Was wäre, wenn wir einen Index basierend auf Spalte 2 erstellen würden? Wird es anders sein? Die Antwort ist nein: Die Schlussfolgerung lautet also, dass es eigentlich keinen Unterschied macht, ob der in MyISAM erstellte Index ein Primärschlüsselindex ist oder nicht. Der einzige Unterschied besteht darin, dass es sich um einen „Primärschlüsselindex“ handelt. InnoDB-Datenverteilung Da InnoDB gruppierte Indizes unterstützt, ist die Indeximplementierung auf MyISAM anders. Schauen wir uns zunächst an, wie der auf dem Primärschlüssel basierende Clusterindex in InnoDB implementiert wird: Erstens enthalten die Blattknoten des Index hier wie beim Primärschlüsselindex in MyISAM auch die Primärschlüsselwerte, und die Primärschlüsselwerte sind der Reihe nach angeordnet. Der Unterschied besteht darin, dass jeder Blattknoten auch die Transaktions-ID, den Rollback-Zeiger und andere Nicht-Primärschlüsselspaltenwerte (hier col2) enthält. Wir können also verstehen, dass der gruppierte Index auf InnoDB alle Zeilendaten in der Originaltabelle entsprechend dem Primärschlüssel anordnet und sie dann auf dem Blattknoten des Index platziert. Dies ist ein Unterschied zu MyISAM im Primärschlüsselindex. Nachdem der entsprechende Primärschlüsselwert gefunden wurde, muss der MyISAM-Primärschlüsselindex den Zeiger (Zeilennummer) verwenden, um die entsprechende Datenzeile in der Tabelle zu finden. Der InnoDB-Primärschlüsselindex legt alle Dateninformationen in den Index, die direkt im Index durchsucht werden können. Werfen wir einen Blick auf den sekundären Index in InnoDB: Es ist ersichtlich, dass der Sekundärindex im Gegensatz zum Primärschlüsselindex in InnoDB nicht alle Zeilendateninformationen im Blattknoten speichert, sondern zusätzlich zum Wert der Indexspalte nur die der Datenzeile entsprechenden Primärschlüsselinformationen speichert. Wir wissen, dass in MyISAM der Sekundärindex mit dem Primärschlüsselindex identisch ist. Zusätzlich zum Wert der Indexspalte speichert er nur Zeigerinformationen (Zeilennummer). Vergleichen Sie die sekundären Indizes der beiden Engines. Das heißt, die Vor- und Nachteile der Speicherung von Zeigern und der Speicherung von Primärschlüsselwerten. Das Speichern des Primärschlüsselwerts zuerst verursacht mehr Speicherplatzaufwand als das bloße Speichern eines Zeigers. Wenn unsere Datentabelle jedoch aufgeteilt wird oder andere strukturelle Änderungen erfährt, ist der Index, der den Primärschlüsselwert speichert, davon nicht betroffen. Der Index, der den Zeiger speichert, muss jedoch möglicherweise erneut aktualisiert und gepflegt werden. Vergleichen Sie die beiden Indizes in den beiden Engines mit einem einzigen Diagramm: Zusammenfassen Dies ist das Ende dieses Artikels über das MySQL-Lernprogramm zu Clustered-Indizes. Weitere relevante Inhalte zu MySQL-Clustered-Indizes 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:
|
<<: Analyse des Prozesses zum Aufbau einer Clusterumgebung mit Apache und Tomcat
>>: So kapseln Sie Timerkomponenten in Vue3
Inhaltsverzeichnis 1. Bild oben 2. Benutzer exist...
In diesem Artikel wird der spezifische Code für J...
1. Einführung in mysqldump mysqldump ist ein logi...
Drei Paradigmen 1NF: Felder sind untrennbar; 2NF:...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis 1. Laden Sie das MySQL-Install...
Webseite WB.ExecWB-Steuerungsdruckmethode Code ko...
Inhaltsverzeichnis 1. Was ist Front-End-Statusver...
Nach den Änderungen: innodb_buffer_pool_size=576M...
Bei der Implementierung dieser Funktion konnte di...
1. Einleitung Presto ist eine Open-Source-SQL-Abf...
Float: links/rechts/keine; 1. Gleichstufiges Schw...
MySQL-Version: MySQL Community Edition (GPL) ----...
MySQL ermöglicht das Erstellen mehrerer Indizes f...
MySQL Zeile zu Spalte, Spalte zu Zeile Der Satz i...