logo

Indizierung in Datenbanken – Set 1

Die Indizierung verbessert die Datenbankleistung, indem sie die Anzahl der Festplattenbesuche minimiert, die zur Erfüllung einer Abfrage erforderlich sind. Es handelt sich um eine Datenstrukturtechnik, die zum Auffinden und schnellen Zugriff auf Daten in Datenbanken verwendet wird. Zur Generierung von Indizes werden mehrere Datenbankfelder verwendet. Der Hauptschlüssel oder Kandidatenschlüssel der Tabelle wird in der ersten Spalte, dem Suchschlüssel, dupliziert. Um den Datenabruf zu beschleunigen, werden die Werte auch in sortierter Reihenfolge gehalten. Es sollte hervorgehoben werden, dass eine Sortierung der Daten nicht erforderlich ist. Die zweite Spalte ist die Datenreferenz oder der Zeiger, die eine Reihe von Zeigern enthält, die die Adresse des Plattenblocks enthalten, in dem dieser bestimmte Schlüsselwert gefunden werden kann.

Struktur des Index in der Datenbank

Attribute der Indizierung

  • Zugriffsarten: Damit ist die Art des Zugriffs gemeint, z. B. wertbasierte Suche, Bereichszugriff usw.
  • Zugriffszeit: Es bezieht sich auf die Zeit, die benötigt wird, um ein bestimmtes Datenelement oder einen bestimmten Satz von Elementen zu finden.
  • Einfügezeit: Es bezieht sich auf die Zeit, die benötigt wird, um den entsprechenden Platz zu finden und neue Daten einzufügen.
  • Löschzeit: Zeit, die benötigt wird, um ein Element zu finden und zu löschen sowie die Indexstruktur zu aktualisieren.
  • Platzbedarf: Es bezieht sich auf den zusätzlichen Speicherplatz, den der Index benötigt.

Struktur des Index in der Datenbank



Im Allgemeinen gibt es zwei Arten von Dateiorganisationsmechanismen, denen die Indizierungsmethoden zum Speichern der Daten folgen:

Kern-Java-Sprache

Sequentielle Dateiorganisation oder geordnete Indexdatei

Dabei basieren die Indizes auf einer sortierten Reihenfolge der Werte. Diese sind im Allgemeinen schnell und eine eher traditionelle Art von Speichermechanismus. Diese geordneten oder sequentiellen Dateiorganisationen speichern die Daten möglicherweise in einem dichten oder spärlichen Format.

  • Dichter Index
    • Für jeden Suchschlüsselwert in der Datendatei gibt es einen Indexdatensatz.
    • Dieser Datensatz enthält den Suchschlüssel und außerdem einen Verweis auf den ersten Datensatz mit diesem Suchschlüsselwert.

Dichter Index

  • Sparse-Index
    • Der Indexdatensatz erscheint nur für einige Elemente in der Datendatei. Jedes Element zeigt wie gezeigt auf einen Block.
    • Um einen Datensatz zu finden, suchen wir den Indexdatensatz mit dem größten Suchschlüsselwert, der kleiner oder gleich dem gesuchten Suchschlüsselwert ist.
    • Wir beginnen bei dem Datensatz, auf den der Indexdatensatz zeigt, und fahren mit den Zeigern in der Datei fort (d. h. sequentiell), bis wir den gewünschten Datensatz finden.
    • Anzahl der erforderlichen Zugriffe=log₂(n)+1, (hier n=Anzahl der von der Indexdatei erfassten Blöcke)

Sparse-Index

Hash-Dateiorganisation

Indizes basieren auf der gleichmäßigen Verteilung der Werte über einen Bereich von Buckets. Die Buckets, denen ein Wert zugewiesen wird, werden durch eine Funktion namens Hash-Funktion bestimmt. Es gibt hauptsächlich drei Methoden der Indizierung:

  • Clustered-Indexierung : Wenn mehr als zwei Datensätze in derselben Datei gespeichert werden, wird diese Art der Speicherung als Cluster-Indizierung bezeichnet. Durch die Verwendung der Cluster-Indizierung können wir die Kosten für die Suche reduzieren, da mehrere Datensätze, die sich auf dasselbe beziehen, an einem Ort gespeichert werden, und es ist außerdem möglich, häufig mehr als zwei Tabellen (Datensätze) zu verknüpfen.
    Der Clustering-Index wird für eine geordnete Datendatei definiert. Die Datendatei ist nach einem Nicht-Schlüsselfeld angeordnet. In einigen Fällen wird der Index für Nicht-Primärschlüsselspalten erstellt, die möglicherweise nicht für jeden Datensatz eindeutig sind. In solchen Fällen gruppieren wir zur schnelleren Identifizierung der Datensätze zwei oder mehr Spalten, um die eindeutigen Werte zu erhalten und daraus einen Index zu erstellen. Diese Methode wird als Clustering-Index bezeichnet. Im Wesentlichen werden Datensätze mit ähnlichen Eigenschaften gruppiert und Indizes für diese Gruppierungen erstellt.
    Studierende, die beispielsweise jedes Semester studieren, werden in Gruppen zusammengefasst. Es werden Erstsemesterstudierende, Zweitsemesterstudierende, Drittsemesterstudierende usw. kategorisiert.

Clustered-Indexierung

  • Primäre Indizierung: Hierbei handelt es sich um eine Art Clustered-Indexierung, bei der die Daten nach dem Suchschlüssel sortiert werden und der Primärschlüssel der Datenbanktabelle zum Erstellen des Indexes verwendet wird. Es ist ein Standardformat für die Indizierung, wo es induziert Sequentielle Dateiorganisation . Da Primärschlüssel eindeutig sind und sortiert gespeichert werden, ist die Leistung des Suchvorgangs recht effizient.
  • Nicht gruppierte oder sekundäre Indizierung : Ein nicht gruppierter Index sagt uns lediglich, wo die Daten liegen, d. h. er gibt uns eine Liste virtueller Zeiger oder Verweise auf den Ort, an dem die Daten tatsächlich gespeichert sind. Die Daten werden nicht physisch in der Reihenfolge des Index gespeichert. Stattdessen sind Daten in Blattknoten vorhanden. Zum Beispiel. die Inhaltsseite eines Buches. Jeder Eintrag gibt uns die Seitenzahl oder den Ort der gespeicherten Informationen an. Die tatsächlichen Daten hier (Informationen auf jeder Seite des Buches) sind nicht organisiert, aber wir haben einen geordneten Verweis (Inhaltsseite) darauf, wo die Datenpunkte tatsächlich liegen. Wir können im nicht gruppierten Index nur eine dichte Reihenfolge haben, da eine spärliche Reihenfolge nicht möglich ist, da die Daten physisch nicht entsprechend organisiert sind.
    Im Vergleich zum Clustered-Index ist mehr Zeit erforderlich, da ein gewisser zusätzlicher Arbeitsaufwand erforderlich ist, um die Daten durch weiteres Verfolgen des Zeigers zu extrahieren. Bei einem Clustered-Index liegen die Daten direkt vor dem Index vor.
Nicht gruppierte Indizierung

Nicht gruppierte Indizierung

Verzeichnis Linux umbenennen
  • Mehrstufige Indizierung: Mit zunehmender Größe der Datenbank wachsen auch die Indizes. Da der Index im Hauptspeicher gespeichert wird, kann es sein, dass ein einstufiger Index zu groß wird, um ihn bei mehreren Festplattenzugriffen zu speichern. Die mehrstufige Indizierung unterteilt den Hauptblock in verschiedene kleinere Blöcke, sodass diese in einem einzigen Block gespeichert werden können. Die äußeren Blöcke werden in innere Blöcke unterteilt, die wiederum auf die Datenblöcke verweisen. Dies kann problemlos und mit weniger Overhead im Hauptspeicher gespeichert werden.

Mehrstufige Indizierung

Vorteile der Indizierung

  • Verbesserte Abfrageleistung: Die Indizierung ermöglicht einen schnelleren Datenabruf aus der Datenbank. Die Datenbank kann Zeilen, die einem bestimmten Wert oder einer Wertesammlung entsprechen, schnell erkennen, indem sie einen Index für eine Spalte generiert, wodurch die für die Durchführung einer Abfrage benötigte Zeit minimiert wird.
  • Effizienter Datenzugriff: Die Indizierung kann die Effizienz des Datenzugriffs verbessern, indem sie die Menge an Festplatten-E/A verringert, die zum Abrufen von Daten erforderlich ist. Die Datenbank kann die Datenseiten für häufig besuchte Spalten im Speicher verwalten, indem sie einen Index für diese Spalten generiert, wodurch der Bedarf zum Lesen von der Festplatte verringert wird.
  • Optimierte Datensortierung: Durch die Indizierung kann auch die Leistung von Sortiervorgängen verbessert werden. Durch die Erstellung eines Index für die zum Sortieren verwendeten Spalten kann die Datenbank das Sortieren der gesamten Tabelle vermeiden und stattdessen nur die relevanten Zeilen sortieren.
  • Konsistente Datenleistung: Durch die Indizierung kann sichergestellt werden, dass die Datenbank auch dann konsistent funktioniert, wenn die Datenmenge in der Datenbank steigt. Ohne Indizierung kann die Ausführung von Abfragen länger dauern, wenn die Anzahl der Zeilen in der Tabelle zunimmt, während die Indizierung eine ungefähr gleichbleibende Geschwindigkeit beibehält.
  • Indem sichergestellt wird, dass nur eindeutige Werte in Spalten eingefügt werden, die als eindeutig indiziert wurden, kann die Indizierung auch dazu genutzt werden, die Integrität der Daten sicherzustellen. Dadurch wird vermieden, dass doppelte Daten in der Datenbank gespeichert werden, was zu Problemen bei der Durchführung von Abfragen oder Berichten führen könnte.

Insgesamt bietet die Indizierung in Datenbanken erhebliche Vorteile für die Verbesserung der Abfrageleistung, den effizienten Datenzugriff, die optimierte Datensortierung, die konsistente Datenleistung und die Durchsetzung der Datenintegrität

Nachteile der Indizierung

  • Die Indizierung erfordert mehr Speicherplatz für die Indexdatenstruktur, wodurch sich möglicherweise die Gesamtgröße der Datenbank erhöht.
  • Erhöhter Aufwand für die Datenbankwartung: Indizes müssen gepflegt werden, wenn Daten in der Tabelle hinzugefügt, zerstört oder geändert werden, was zu einem höheren Datenbankwartungsaufwand führen kann.
  • Die Indizierung kann die Einfüge- und Aktualisierungsleistung verringern, da die Indexdatenstruktur jedes Mal aktualisiert werden muss, wenn Daten geändert werden.
  • Die Auswahl eines Index kann schwierig sein: Es kann schwierig sein, die richtigen Indizes für eine bestimmte Abfrage oder Anwendung auszuwählen und erfordert möglicherweise eine detaillierte Untersuchung der Daten- und Zugriffsmuster.

Merkmale der Indizierung

  • Die Entwicklung von Datenstrukturen, wie z B-Bäume oder Die wichtigsten Spalten für die Indizierung werden basierend auf der Häufigkeit ihrer Verwendung und der Art der Abfragen ausgewählt, denen sie ausgesetzt sind. Der Kardinalität , Selektivität und Eindeutigkeit der Indexierungsspalten können berücksichtigt werden.
  • Es gibt verschiedene Indextypen, die von Datenbanken verwendet werden, darunter primäre, sekundäre, gruppierte und nicht gruppierte Indizes. Basierend auf den besonderen Anforderungen des Datenbanksystems bietet jede Indexform Vor- und Nachteile.
  • Damit das Datenbanksystem optimal funktioniert, ist eine regelmäßige Indexpflege erforderlich. Abhängig von Änderungen in den Daten und Nutzungsmustern umfassen Wartungsarbeiten das Erstellen, Aktualisieren und Entfernen von Indizes.
  • Die Optimierung von Datenbankabfragen umfasst die Indizierung, was unerlässlich ist. Der Abfrageoptimierer nutzt die Indizes, um basierend auf den Kosten für den Zugriff auf die Daten und der Selektivität der Indexierungsspalten die beste Ausführungsstrategie für eine bestimmte Abfrage auszuwählen.
  • Datenbanken nutzen eine Reihe von Indexierungsstrategien, darunter Covering-Indizes, Nur-Index-Scans und Teilindizes. Diese Techniken maximieren die Nutzung von Indizes für bestimmte Arten von Abfragen und Datenzugriffen.
  • Wenn nicht zusammenhängende Datenblöcke in einem Index gespeichert werden, kann dies zu einer Fragmentierung des Index führen, wodurch der Index weniger effektiv wird. Regelmäßige Indexwartungen wie Defragmentierung und Reorganisation können abnehmen Zersplitterung .

Abschluss

Die Indizierung ist eine sehr nützliche Technik, die bei der Optimierung der Suchzeit hilft Datenbank Abfragen. Die Tabelle der Datenbankindizierung besteht aus einem Suchschlüssel und Zeiger . Es gibt vier Arten der Indizierung: primäre Indizierung, sekundäres Clustering und mehrwertige Indizierung. Die primäre Indizierung wird in zwei Typen unterteilt: dicht und spärlich. Eine dichte Indizierung wird verwendet, wenn die Indextabelle Datensätze für jeden Suchschlüssel enthält. Sparse-Indizierung wird verwendet, wenn die Indextabelle nicht für jeden Datensatz einen Suchschlüssel verwendet. Verwendung der mehrstufigen Indizierung B+ Baum . Der Hauptzweck der Indizierung besteht darin, eine bessere Leistung beim Datenabruf bereitzustellen.

FAQs zur Indizierung

F.1: Was ist Indizierung in Datenbanken?

Antwort:

Die Indizierung ist im Grunde eine Technik, die dazu beiträgt, die Suchzeit einer Datenbankabfrage zu verkürzen oder einen schnelleren Zugriff auf die Datenbank zu ermöglichen.

F.2: Welche Beispiele gibt es für die Indexierung von Datenbanken?

Antwort:

Einige gängige Beispiele für Indexierungsdatenbanken sind das Web of Science und DOAJ (Directory of Open Access Journals).

Weitere Einzelheiten finden Sie unter Einführung in B+ Tree Und Arten von Schlüsseln in der Datenbank Artikel.