Detaillierte Erläuterung des MySQL-Clusterindex und des Nicht-Clusterindex

Detaillierte Erläuterung des MySQL-Clusterindex und des Nicht-Clusterindex

1. Clustered-Index

Tabellendaten werden in der Reihenfolge des Index gespeichert, d. h. die Reihenfolge der Indexelemente entspricht der physischen Reihenfolge der Datensätze in der Tabelle. Bei einem gruppierten Index speichern die Blattknoten die eigentlichen Datenzeilen und es gibt keine separaten Datenseiten.

Sie können höchstens einen gruppierten Index für eine Tabelle erstellen, da es für die tatsächlichen Daten nur eine physische Reihenfolge geben kann.

Aus den physischen Dateien ist auch ersichtlich, dass die Datendateien von InnoDB (Clustered Index) nur die Datenstrukturdatei .frm und die Datendatei .idb haben. Die Daten- und Indexinformationen werden zusammen in .idb gespeichert.

2. Nicht gruppierter Index

Die Reihenfolge, in der Tabellendaten gespeichert werden, hat nichts mit der Reihenfolge der Indizes zu tun. Bei einem nicht gruppierten Index enthält der Blattknoten den Indexfeldwert und einen logischen Zeiger auf die Datenzeile der Datenseite , und die Anzahl der Zeilen entspricht der Datenmenge in der Datentabelle.

Aus der physischen Datei ist auch ersichtlich, dass die MyISAM-Indexdatei (nicht gruppierter Index) .MYI und die Datendatei .MYD separat gespeichert und relativ unabhängig sind.

Zusammenfassen:

Der Unterschied zwischen einem gruppierten Index und einem nicht gruppierten Index ist:

Die Blattknoten des gruppierten Indexes (innoDB) sind Datenknoten;

Die Blattknoten nicht gruppierter Indizes (MyISAM) sind zwar immer noch Indexdateien, die Indexdateien enthalten jedoch Zeiger auf die entsprechenden Datenblöcke.

Bei einem nicht gruppierten Index müssen jedes Mal, wenn die erforderliche Zeilennummer über den Index abgerufen wird, Daten über die Datenträgeradresse auf dem Blatt von der Festplatte abgerufen werden (die Zeile zurückgegeben werden), was zeitaufwändig ist. Um die Zeit zum Abrufen von Daten zu optimieren, verwendet die InnoDB-Engine einen gruppierten Index.
Clustered Index, d. h. Speicherung der Daten auf den Indexblattseiten. Bei der InnoDB-Engine speichert die Blattseite nicht mehr die der Zeile entsprechende Adresse, sondern direkt die Daten.

Dadurch wird der Zeitaufwand durch die Rücksendeoperation vermieden. Dadurch ist InnoDB bei manchen Abfragen sogar schneller als MyISAM!

PS: Was die Abfragezeit betrifft, wird allgemein angenommen, dass MyISAM Funktionalität zugunsten der Leistung opfert und Abfragen schneller sind. Aber das ist nicht unbedingt der Fall. In den meisten Fällen ist MyISAM tatsächlich schneller als InnoDB. Die Abfragezeit wird jedoch von vielen Faktoren beeinflusst. Der Grund für die Verlangsamung von InnoDB-Abfragen liegt darin, dass es Transaktionen, Rollbacks usw. unterstützt, sodass die Blattseiten von InnoDB tatsächlich die Transaktions-ID (mit anderen Worten die Versionsnummer) und den Rollback-Zeiger enthalten.

Aktionsbeschreibung Verwenden eines gruppierten Indexes Verwenden eines nicht gruppierten Indexes
Spalten werden oft nach Gruppen sortiert verwenden verwenden
Gibt Daten innerhalb eines Bereichs zurück verwenden Nicht verwendet
Ein oder sehr wenige unterschiedliche Werte Nicht verwendet Nicht verwendet
Geringe Anzahl unterschiedlicher Werte verwenden Nicht verwendet
Große Anzahl unterschiedlicher Werte Nicht verwendet verwenden
Häufig aktualisierte Kolumnen Nicht verwendet verwenden
Fremdschlüsselspalten verwenden verwenden
Primärschlüsselspalten verwenden verwenden
Häufiges Ändern von Indexspalten Nicht verwendet verwenden

Kurz gesagt: Clustered-Indizes sind nicht für häufig aktualisierte Spalten, häufig geänderte indizierte Spalten und eine kleine Anzahl unterschiedlicher Werte geeignet.

Oben finden Sie eine ausführliche Erläuterung des MySQL-Clusterindex und des Nicht-Clusterindex. Weitere Informationen zum MySQL-Clusterindex und Nicht-Clusterindex finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • MySQL-Lernprogramm Clustered Index
  • Beispielanalyse des Seitenaufteilungsprinzips des MySQL-Clusterindex
  • Grundlegendes zu MySQL-Clusterindizes und wie Clusterindizes wachsen

<<:  Detaillierte Erläuterung der Verwendung des DockerHub-Image-Repository

>>:  Typescript+React zum Erzielen einfacher Drag-and-Drop-Effekte auf Mobilgeräten und PCs

Artikel empfehlen

Vue-Elternkomponente ruft Funktionsimplementierung der Unterkomponente auf

Die übergeordnete Vue-Komponente ruft die Funktio...

Teilen Sie das Problem, dass Ubuntu 19 die Docker-Quelle nicht installieren kann

Entsprechend den wichtigsten Websites und persönl...

Beispielcode zum Bereitstellen eines Spring-Boot-Projekts mit Docker

1. Grundlegender Spring-Boot-Schnellstart 1.1 Sch...

Einfache Verwendung des Vue-Busses

Einfache Verwendung des Vue-Busses Beschreibung d...

Tipps zur Datenstatistik in MySQL

Als häufig verwendete Datenbank erfordert MySQL v...

So führen Sie Linux-Befehle im Hintergrund aus

Wenn Sie einen Befehl im Terminal ausführen, müss...

Über das Problem der dynamischen Spleißen der SRC-Bildadresse von img in Vue

Werfen wir einen Blick auf das dynamische Spleiße...

Zusammenfassung der MySQL-Tabellen- und Spaltenkommentare

Genau wie bei Code können Sie den Tabellen und Sp...

Installieren Sie Python 3.6 unter Linux und vermeiden Sie Fallstricke

Installation von Python 3 1. Abhängige Umgebung i...

Ausführliche Erklärung der Iteratoren in ECMAScript

Inhaltsverzeichnis Vorwort Frühere Iterationen It...

Webdesign-Tutorial (4): Über Materialien und Ausdrücke

<br />Vorheriges Webdesign-Tutorial: Webdesi...

Detaillierte Erklärung des JavaScript-Prototyps und Beispiele

Inhaltsverzeichnis Die Beziehung zwischen der Kon...