Freigeben über


Heapstrukturen

Ein Heap ist eine Tabelle ohne gruppierten Index. Heaps haben eine Zeile in sys.partitions, mit index_id = 0 für jede vom Heap verwendete Partition. Standardmäßig verfügt ein Heap über eine einzelne Partition. Wenn ein Heap über mehrere Partitionen verfügt, hat jede Partition eine Heapstruktur, in der die Daten für die jeweilige Partition enthalten sind. Wenn ein Heap z. B. über vier Partitionen verfügt, gibt es vier Heapstrukturen – jeweils eine in jeder Partition.

Je nach den im Heap enthaltenen Datentypen weist jede Heapstruktur eine oder mehrere Zuordnungseinheiten auf, um die Daten für eine bestimmte Partition zu speichern und zu verwalten. Zumindest verfügt jeder Heap über eine IN_ROW_DATA-Zuordnungseinheit pro Partition. Der Heap hat außerdem eine LOB_DATA-Zuordnungseinheit pro Partition, wenn diese LOB-Spalten (Large OBject) enthält. Darüber hinaus verfügt er über eine ROW_OVERFLOW_DATA-Zuordnungseinheit pro Partition, wenn diese Spalten mit variabler Länge enthält, die das Zeilengrößenlimit von 8.060 Byte überschreiten. Weitere Informationen zu Zuordnungseinheiten finden Sie unter Organisationsstruktur von Tabellen und Indizes.

Die Spalte first_iam_page in der sys.system_internals_allocation_units-Systemsicht verweist auf die erste IAM-Seite (Index Allocation Map) in der Kette der IAM-Seiten, die zur Verwaltung des Speicherplatzes verwendet werden, der dem Heap zugeordnet ist. SQL Server verwendet die IAM-Seiten für Bewegungen innerhalb des Heaps. Die Datenseiten und die Zeilen innerhalb eines Heaps weisen keine bestimmte Reihenfolge auf und sind nicht verknüpft. Die einzige logische Verbindung zwischen den Datenseiten sind die Informationen, die auf den IAM-Seiten aufgezeichnet sind.

Wichtiger HinweisWichtig

Die Systemsicht sys.system_internals_allocation_units ist nur für die interne Verwendung durch MicrosoftSQL Server reserviert. Zukünftige Kompatibilität wird nicht sichergestellt.

Tabellenscans oder serielle Lesevorgänge in einem Heap können durchgeführt werden, indem die IAM-Seiten gescannt werden, um auf diese Weise die Blöcke zu ermitteln, die Seiten des Heaps enthalten. Da die IAM die Blöcke in derselben Reihenfolge darstellt, in der sie in der Datendatei vorliegen, werden serielle Heapscans immer sequenziell durch jede Datei ausgeführt. Das Verwenden der IAM-Seiten zum Festlegen der Scanfolge bedeutet weiterhin, dass Zeilen aus dem Heap nicht notwendigerweise in der Reihenfolge zurückgegeben werden, in der sie eingefügt wurden.

Die folgende Abbildung zeigt, wie in SQL Server Database Engine (Datenbankmodul) die IAM-Seiten zum Abrufen von Datenzeilen in einem Heap mit einer einzelnen Partition verwendet werden.

IAM-Seiten rufen Daten in einem Einzelpartitionsheap ab