Zusammenfassung der Wissenspunkte des Datenbankindex

Zusammenfassung der Wissenspunkte des Datenbankindex

Erster Blick-Index

Das Konzept des Indexes

Ein Index ist eine zusätzliche Speicherstruktur, die auf der Grundlage einer Speichertabelle definiert ist und dabei hilft, erforderliche Datensätze schnell zu finden, ohne alle Datensätze überprüfen zu müssen. Er besteht aus einer Reihe von Indexelementen, die auf der Festplatte gespeichert sind, und jedes Indexelement besteht aus zwei Teilen. Das heißt, das Indexfeld und der Zeilenzeiger.

Indexfelder

Es wird durch die Aneinanderreihung der Werte einiger Spalten einer Tabelle gebildet, im Normalfall einer Spalte. Ein Index speichert normalerweise jeden Wert des indizierten Felds.

Zeilenzeiger

Zeigt auf den Speicherort auf der Festplatte, an dem der Datensatz in der Tabelle gespeichert ist, der den indizierten Feldwert enthält.

Die Datei, in der Indexelemente gespeichert werden, wird als Indexdatei bezeichnet, und die Speichertabelle wird als Hauptdatei bezeichnet.

Indexdateiorganisation

(Im Gegensatz dazu umfasst die Hauptdateiorganisation Heap-Dateien, sortierte Dateien, Hash-Dateien, Cluster-Dateien usw.)

Sortierte Indexdatei: Organisieren und speichern Sie in einer bestimmten Reihenfolge entsprechend den Indexfeldwerten

Hash-Indexdatei: Speichert Daten in einem Hash-Bucket mithilfe einer Hash-Funktion basierend auf dem Indexfeldwert.

Die Rolle der Indizes

Für verschiedene Attribute oder Attributkombinationen in einer Tabelle werden unterschiedliche Indexdateien erstellt. Der Indexfeldwert kann der Wert eines beliebigen Attributs oder einer Kombination von Attributwerten in der Tabelle sein.

Die Indexdatei ist wesentlich kleiner als die Hauptdatei. Durch die Suche in einer kleinen Indexdatei (die komplett in den Speicher geladen werden kann) können Sie die relevanten Datensätze in der sehr großen Hauptdatei schnell finden und dann gezielt lesen.

Wenn ein Index vorhanden ist, müssen Aktualisierungsvorgänge sowohl die Indexdatei als auch die Hauptdatei gleichzeitig aktualisieren. Behalten Sie die Datenkonsistenz bei.

Indexerstellung und -verwaltung in der SQL-Sprache

Grundlagen

Wenn nach der Definition einer Tabelle ein Primärschlüssel definiert ist, generiert das System automatisch einen Primärindex.

Indizes können vom Benutzer definiert oder widerrufen werden;

Wenn ein Index erstellt wird, unabhängig davon, ob es sich um einen Primärindex oder einen benutzerdefinierten Index handelt, verwaltet das DBMS automatisch alle Indizes.

Wenn eine Tabelle gelöscht wird, werden alle für die Tabelle definierten Indizes automatisch gelöscht.

Erstellen und Löschen von Indizes

Erstellen Sie einen Index idxSname auf Student (Sname);
DROP INDEX idxSname;

Dichte und spärliche Indizes

Dichter Index

Für jeden Datensatz in der Masterdatei (jeden gebildeten Indexfeldwert) gibt es einen entsprechenden Indexeintrag, der den Speicherort des Datensatzes angibt. Ein solcher Index wird als dichter Index bezeichnet. (dichter Index)

Sparse-Index

Für einige Datensätze in der Hauptdatei (die die Indexfeldwerte bilden) gibt es entsprechende Indexelemente. Solche Indizes werden als nicht dichte Indizes oder spärliche Indizes bezeichnet.

So finden spärliche Indizes Datensätze

Um den Datensatz zu finden, dessen Indexfeldwert K ist, müssen Sie

Suchen Sie zunächst das Indexelement, das dem größten Indexfeldwert entspricht, der kleiner als K ist. Beginnen Sie dann mit der sequenziellen Suche in der Tabelle ab dem Datensatz, der dem Indexelement entspricht.

Voraussetzungen für die Verwendung von Sparse-Indizes : Die Hauptdatei muss in der Reihenfolge der entsprechenden Indexfeldattribute gespeichert werden.

Im Vergleich zu dichten Indizes : benötigt weniger Platz, erfordert weniger Wartung, ist aber langsamer

Balance : Indexeinträge zeigen nicht auf Datensatzzeiger, sondern auf die Speicherblöcke, in denen sich die Datensätze befinden. Das heißt, es gibt einen Indexeintrag pro Speicherblock, nicht einen Indexeintrag pro Datensatz - Primärindex

So finden dichte Indizes Datensätze

1. Dichte Indizes von Kandidatenschlüsselattributen können einzeln abgeglichen werden

2. Bei dichten Indizes von nicht in Frage kommenden Schlüsselattributen wird die Hauptdatei nach Indexfeldwerten sortiert und für jeden nicht wiederholten ersten Indexfeldwert ein Indexelement erstellt. In der Nähe wird nach dem gleichen Indexfeldwert gesucht.

3. Bei dichten Indizes von Nichtkandidatenschlüsselattributen wird die Primärdatei nicht nach Indexfeldwerten sortiert. Die Indexfelder in den Indexelementen müssen nicht eindeutig sein und können wiederholt auftreten, um auf die entsprechenden Indexfeldwerte in der Primärdatei zu verweisen.

4. Bei dichten Indizes mit Nichtkandidaten-Schlüsselattributen wird die Hauptdatei nicht nach dem Indexfeldwert sortiert. Wenn das Indexfeld im Index eindeutig sein muss, kann eine Zwischenschicht, der Zeiger-Bucket, eingeführt werden; der Zeiger-Bucket ist der dritte Fall.

Primärindex

Primärindex-Konzept

Normalerweise gibt es für jeden Speicherblock einen Indexeintrag. Die Gesamtzahl der Indexeinträge entspricht der Anzahl der von der Speichertabelle belegten Speicherblöcke. Der erste Datensatz jedes Speicherblocks in der Speichertabelle wird auch als Ankerdatensatz oder kurz Blockanker bezeichnet.

Der Indexfeldwert des Primärindex ist der Indexfeldwert des Blockankers, und der Zeiger zeigt auf den Speicherblock, in dem er sich befindet.

Der Primärindex ist eine nach Indexfeldwerten sortierte geordnete Datei. Er wird üblicherweise auf Basis des primärschlüsselbasierten Sortierfelds der geordneten Hauptdatei erstellt, d. h. das Indexfeld des Primärindex entspricht dem Sortiercode (Primärschlüssel) der Hauptdatei.

Der Primärindex ist ein Sparse-Index.

Hilfsindex

Hilfsindexdefinition

Eine Hilfsspeicherstruktur, die für ein oder mehrere nicht sortierte Felder der Primärdatei definiert ist. Normalerweise gibt es für verschiedene Werte eines nicht sortierten Felds einen Indexeintrag, das Indexfeld stellt die verschiedenen Werte des Felds dar und der Zeiger zeigt auf den Block, der den Datensatz enthält, oder auf den Datensatz selbst.

Wenn das nicht sortierte Feld ein Indexfeld ist und der Feldwert nicht eindeutig ist, wird eine Struktur ähnlich einer verknüpften Liste verwendet, um die Positionen aller Datensätze des Feldwerts zu speichern.

Hilfsindizes sind dichte Indizes, und die Abrufgeschwindigkeit ist manchmal recht hoch

Der Unterschied und Zusammenhang zwischen Primärindex und Hilfsindex

Eine Primärdatei hat nur einen Primärindex, kann aber mehrere Sekundärindizes haben.

Der Primärindex basiert normalerweise auf dem Primärschlüssel oder Sortiercode, während der Sekundärindex auf dem Nichtsortierfeld basiert.

Mit dem Primärindex können die Primärdateidaten neu organisiert werden. Mit dem Sekundärindex können die Primärdateidaten jedoch nicht geändert werden.

Der Primärindex ist ein spärlicher Index und der Sekundärindex ein dichter Index.

Gruppierte und nicht gruppierte Indizes

Gruppierter Index

Dies bedeutet, dass benachbarte Datensätze im Index auch benachbart in der Hauptdatei gespeichert werden.

Nicht gruppierter Index

Dies bedeutet, dass benachbarte Datensätze im Index nicht unbedingt nebeneinander in der Hauptdatei gespeichert sind.

Beachten:

Wenn ein Sortierfeld in der Primärdatei nicht der Primärschlüssel ist, ist der Wert jedes Datensatzes in diesem Feld nicht eindeutig. In diesem Fall wird das Feld als Clustered-Feld bezeichnet. Ein Clustered-Index wird normalerweise für ein Clustered-Feld definiert. Ein Clustered-Index hat normalerweise ein Indexelement für jeden unterschiedlichen Wert im Clustered-Feld (die Gesamtzahl der Indexelemente entspricht der Anzahl der unterschiedlichen Werte im Clustered-Feld in der Primärdatei). Das Indexfeld sind die unterschiedlichen Werte des Clustered-Felds. Da Datensätze mit demselben Clustered-Feldwert in mehreren Blöcken gespeichert sein können, zeigt der Zeiger des Indexelements auf den ersten Block. Eine Primärdatei kann nur eine gruppierte Indexdatei, aber mehrere nicht gruppierte Indexdateien haben. Der Primärindex ist normalerweise ein gruppierter Index (die Gesamtzahl der Indexeinträge entspricht jedoch nicht unbedingt der Anzahl der unterschiedlichen Werte im gruppierten Feld in der Primärdatei; sie entspricht der Anzahl der Speicherblöcke der Primärdatei). Der Sekundärindex ist normalerweise ein nicht gruppierter Index. Ein Primärindex/Clusterindex ist ein Index, der bestimmt, wo Datensätze gespeichert werden, während ein Nicht-Clusterindex nur für Abfragen verwendet werden kann, um anzugeben, wo Datensätze gespeichert werden.

Invertierter Index

Der invertierte Index ist eine spezielle Speicherform, die die „Wort-Dokument-Matrix“ implementiert. Über den invertierten Index können Sie schnell eine Liste von Dokumenten erhalten, die ein bestimmtes Wort enthalten, basierend auf dem Wort. Der invertierte Index besteht hauptsächlich aus zwei Teilen: „Wortwörterbuch“ und „invertierte Datei“.

Lexikon: Die übliche Indexeinheit einer Suchmaschine ist ein Wort. Ein Lexikon ist eine Zeichenfolge, die aus allen Wörtern besteht, die in einer Dokumentsammlung vorkommen. Jeder Indexeintrag im Lexikon enthält einige Informationen über das Wort selbst und einen Zeiger auf eine „invertierte Liste“.

Postingliste: Die Postingliste erfasst die Dokumentliste aller Dokumente, in denen ein bestimmtes Wort vorkommt, sowie die Positionsinformationen des Wortes im Dokument. Jeder Datensatz wird als Postingelement bezeichnet. Anhand der invertierten Liste können wir erkennen, welche Dokumente ein bestimmtes Wort enthalten.

Invertierte Datei: Die invertierte Liste aller Wörter wird häufig sequenziell in einer Datei auf der Festplatte gespeichert. Diese Datei wird als invertierte Datei bezeichnet. Eine invertierte Datei ist eine physische Datei, die den invertierten Index speichert.

Mehrstufige Indizierung

Wenn viele Indexelemente vorhanden sind, können Sie einen weiteren Index für den Index erstellen. Dieser wird als mehrstufiger Index bezeichnet.

Gängige mehrstufige Indizes: B-Baum/B+-Baum-Indizes

Multiattributindex

Das Indexfeld ist ein Index, der durch die Kombination mehrerer Attributwerte der Tabelle gebildet wird.

Hash-Index

Mit Hash-Techniken organisierte Indizes

Rasterindex

Verwenden Sie mehrere Indexfelder für die gelenkübergreifende Positionierung und Abfrage

B+Baumindex

Definition

Ein mehrstufiger Index, der Indexelemente in einer Baumdatenstruktur organisiert

Da ein Speicherblock mehrere Indexelemente speichern kann, besteht jedes Indexelement aus zwei Teilen: einem Zeiger und einem Indexfeld. Ki stellt den Indexfeldwert dar und Pi stellt einen Zeiger dar, der auf einen Indexblock oder einen Datenblock oder einen Datensatz in einem Datenblock zeigt.

Ein Block kann normalerweise n-1 Indexelemente und 1 Zeiger speichern.

B+ Baumfunktionen

  • Behält die Baumhierarchie automatisch bei, um sie an die Hauptdateigröße anzupassen
  • Die Zeigerauslastung jedes Indexblocks liegt zwischen 50 % und 100 %.

Auf den Indexfeldwert x zeigt Pi, wenn Ki-1<=x<Ki, und Pi+1 zeigt auf ihn, wenn Ki<=x<Ki+1.

Worauf zeigen Blattknoten und Blattknotenzeiger jeweils?

Nicht-Blattknotenzeiger zeigen auf Indexblöcke und Blattknotenzeiger zeigen auf Datenblöcke oder Datensätze der Hauptdatei.

Der letzte Zeiger des Blattknotens zeigt auf den nächsten Datenblock

Die Anzahl der tatsächlich von einem Indexblock verwendeten Indexzeiger beträgt d, was (mit Ausnahme des Stammknotens) erfüllt:

n/2<=d<=n

Es werden mindestens 2 Zeiger des Wurzelknotens verwendet

B+-Baumspeicherkonventionen

Indexfeldwerte erscheinen wiederholt in Blattknoten und Nicht-Blattknoten

Zeiger auf die Hauptdatei erscheinen nur in Blattknoten

Alle Blattknoten können den Index aller Schlüsselwerte abdecken

Indexfeldwerte werden der Reihe nach in Blattknoten angeordnet

Allein die Menge der Blattknoten stellt den vollständigen Index der Hauptdatei dar.

Dies ist das Ende dieses Artikels über die Zusammenfassung der Wissenspunkte zum Datenbankindex. Weitere relevante Datenbankindexinhalte 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:
  • Eine Zusammenfassung der Wissenspunkte zur Datenbankindizierung. Alles, was Sie wissen müssen, finden Sie hier.
  • Detaillierte Einführung in die Erstellung und Verwendung von Indizes in Oracle-Datenbanken
  • MySQL-Datenbankoptimierung: Indeximplementierungsprinzip und Nutzungsanalyse
  • Erweiterte Verwendung von Ansichten, Transaktionen, Indizes, Selbstverbindungen und Benutzerverwaltung in der MySQL-Datenbank – Beispielanalyse
  • So passen Sie die Reihenfolge an, in der Django-Modelle Datenbankindizes erstellen

<<:  Klasse in Front-End-JavaScript

>>:  Analyse der grundlegenden Verwendung von ul und li

Artikel empfehlen

Spezifischer Einsatz von Routing Guards in Vue

Inhaltsverzeichnis 1. Globale Wache 1.1 Globaler ...

Wissen Sie, wie Sie mit Vue-Cropper Bilder in Vue zuschneiden?

Inhaltsverzeichnis 1. Installation: 2. Verwendung...

Sechsstufiger Beispielcode für eine JDBC-Verbindung (Verbindung zu MySQL)

Sechs Schritte von JDBC: 1. Registrieren Sie den ...

Interpretation der Vue-Komponentenregistrierungsmethode

Inhaltsverzeichnis Überblick 1. Globale Registrie...

Modularität in Node.js, npm-Paketmanager erklärt

Inhaltsverzeichnis Das Grundkonzept der Modularit...

Eine kurze Einführung in MySQL InnoDB ReplicaSet

Inhaltsverzeichnis 01 Einführung in InnoDB Replic...

So implementieren Sie https mit Nginx und OpenSSL

Wenn die Serverdaten nicht verschlüsselt und mit ...