Clustered-Index verstehen

8

Da PostgreSQL Clustered-Indizes nicht unterstützt, denke ich an MSSQL server. Ich habe den Artikel gelesen, in dem Cluster und Nicht-Vergleiche verglichen werden. Clustered-Indizes. Der Kern des Artikels ist (betonen Sie meinen):

  

Nicht gruppierte Indizes speichern sowohl einen Wert als auch einen Zeiger auf den tatsächlichen Wert   Zeile, die diesen Wert enthält.

Und

  

Clustered-Indizes müssen keinen Zeiger auf die tatsächliche Zeile speichern   aufgrund der Tatsache, dass die Zeilen in der Tabelle auf der Festplatte gespeichert sind   die gleiche genaue Reihenfolge wie der gruppierte Index

Wie mir gesagt wurde dort und dort war es sehr schwierig, physisch zu unterstützen Reihenfolge der Daten der Tabelle, insbesondere wenn die Tabelle auf mehrere Laufwerke aufgeteilt ist. Und jetzt treffe ich das Clustered-Index-Konzept unter der Annahme, dass Daten in einer gewissen Reihenfolge gespeichert sind. Das ist, worüber ich verwirrt war.

Frage: Was ist die Clustered-Index-Struktur? Unterstützt es tree -like Struktur, die durchlaufen wird, wie PosgtreSQL für btree Indizes?

    
St.Antario 06.10.2015, 12:07
quelle

2 Antworten

4

In SQL Server sind Indizes als B-Bäume organisiert. Jede Seite in einem Index-B-Baum wird als Indexknoten bezeichnet. Der oberste Knoten des B-Baums wird Wurzelknoten genannt. Die unterste Ebene der Knoten im Index wird Blattknoten genannt. Alle Indexstufen zwischen den Wurzelknoten und den Blattknoten werden zusammen als Zwischenebenen bezeichnet. In einem gruppierten Index enthalten die Blattknoten die Datenseiten der zugrunde liegenden Tabelle. Die Knoten der Root- und der Zwischenebene enthalten Indexseiten, die Indexzeilen enthalten. Jede Indexzeile enthält einen Schlüsselwert und einen Zeiger auf eine Seite mittlerer Ebene in der B-Struktur oder eine Datenzeile auf der Blattebene des Index. Die Seiten in jeder Ebene des Index sind in einer doppelt verknüpften Liste verknüpft.

Clustered-Indizes haben eine Zeile in sys.partitions mit index_id = 1 für jede Partition, die vom Index verwendet wird. Ein gruppierter Index hat standardmäßig eine einzelne Partition. Wenn ein gruppierter Index mehrere Partitionen aufweist, verfügt jede Partition über eine B-Baum-Struktur, die die Daten für diese bestimmte Partition enthält. Wenn ein Clustered-Index beispielsweise vier Partitionen hat, gibt es vier B-Tree-Strukturen. eine in jeder Partition.

für Ref.

Ссылка Ссылка

    
Jayanti Lal 06.10.2015, 12:14
quelle
1

Im gruppierten Index gibt es drei Ebenen

1. Root-Ebene

2. Zwischenstufe

3.Leaf-Ebene

Der gruppierte Index enthält die Datenzeilen auf der Blattebene. Wenn Sie einen Wert in der indizierten Spalte suchen, würde die Abfrage-Engine zuerst den Wert auf der Stammebene anzeigen, wenn der Wert auf der Stammebene verfügbar ist, und die Abfrage-Engine dann nicht auf die Zwischenebene oder Blattebene wechselt. Wenn der Wert nicht auf der Root-Ebene basiert, sucht er den Wert in der Zwischenebene oder der Blattebene. Wenn die Anzahl der Datenzeilen zu klein ist, ist im Clustered Index keine Zwischenebene verfügbar.

Das folgende Diagramm kann Ihnen helfen, die Grundlagen des Clustered Index zu verstehen:

    
Jason Clark 06.10.2015 12:52
quelle

Tags und Links