Konzepte für partitionierte Tabellen und Indizes

Durch die Partitionierung können große Tabellen oder Indizes einfacher verwaltet werden, da Sie Teilmengen von Daten schnell und effizient verwalten und darauf zugreifen können, während die Integrität einer Datensammlung erhalten bleibt. Mithilfe der Partitionierung dauert ein Vorgang wie das Laden von Daten von einem OLTP-System in ein OLAP-System, der in früheren Versionen von SQL Server Minuten und Stunden gedauert hat, nur Sekunden. Wartungsvorgänge, die für Teilmengen von Daten ausgeführt werden, sind ebenfalls effizienter, da diese Vorgänge nicht die gesamte Tabelle, sondern nur die erforderlichen Daten zum Ziel haben.

HinweisHinweis

Partitionierte Tabellen und Indizes sind nur in den Enterprise-, Developer- und Evaluation-Editionen von SQL Server verfügbar.

Die Daten partitionierter Tabellen und Indizes werden in Einheiten aufgeteilt, die über mehrere Dateigruppen in einer Datenbank verteilt sein können. Die Daten werden horizontal partitioniert, sodass Gruppen von Zeilen einzelnen Partitionen zugeordnet werden. Die Tabelle oder der Index wird als einzelne logische Entität behandelt, wenn Abfragen oder Aktualisierungen für die Daten ausgeführt werden. Alle Partitionen eines einzelnen Indexes oder einer Tabelle müssen sich in der gleichen Datenbank befinden.

Partitionierte Tabellen und Indizes unterstützen alle Eigenschaften und Funktionen, die für das Entwerfen und Abfragen von Standardtabellen und -indizes gelten, z. B. Einschränkungen, Standardwerte, Identitäts- und Zeitstempelwerte sowie Trigger. Wenn Sie also eine partitionierte Sicht implementieren möchten, die für einen Server lokal ist, können Sie stattdessen eine partitionierte Tabelle implementieren.

Die Entscheidung, ob die Partitionierung implementiert werden soll, hängt hauptsächlich davon ab, wie groß Ihre Tabelle ist bzw. werden wird, wie sie verwendet wird und wie gut ihre Leistung bezüglich Benutzerabfragen und Verwaltungsvorgängen ist.

Im Allgemeinen kann sich eine große Tabelle für die Partitionierung eignen, wenn die beiden folgenden Aussagen zutreffen:

  • Die Tabelle enthält große Mengen von Daten, die auf verschiedene Weise verwendet werden, oder wird diese in Zukunft wahrscheinlich enthalten.

  • Die Leistung von Abfragen oder Aktualisierungen der Tabelle ist nicht erwartungsgemäß, oder die Wartungskosten übersteigen vordefinierte Wartungszeiträume.

Wenn ein aktueller Monatsbestand von Daten hauptsächlich für INSERT-, UPDATE-, DELETE- und MERGE-Operationen verwendet wird, während vorherige Monatsbestände hauptsächlich für SELECT-Abfragen verwendet werden, kann sich die Verwaltung dieser Tabelle als einfacher erweisen, wenn sie nach Monaten partitioniert wird. Dieser Vorteil kann besonders gravierend sein, wenn sich die regelmäßigen Wartungsvorgänge für die Tabelle nur auf eine Untermenge der Daten beziehen müssen. Wenn die Tabelle nicht partitioniert ist, können diese Operationen eine große Menge von Ressourcen für das gesamte Dataset belegen. Mit der Partitionierung können Wartungsvorgänge, wie z. B. das erneute Erstellen von Indizes sowie Defragmentierungen, beispielsweise für einen einzelnen Monatsbestand lesegeschützter Daten ausgeführt werden, während die schreibgeschützten Daten weiter für den Onlinezugriff verfügbar sind.

Nehmen Sie als Erweiterung dieses Beispiels an, Sie möchten einen Monatsbestand schreibgeschützter Daten zu Analysezwecken aus dieser Tabelle in eine Data Warehouse-Tabelle verschieben. Wenn die Partitionierung verwendet wird, können Untermengen der Daten schnell in Stagingbereiche für die Offlineverwaltung verschoben und dann als Partitionen vorhandenen partitionierten Tabellen hinzugefügt werden, wenn sich diese Tabellen alle in der gleichen Datenbankinstanz befinden. Vorgänge wie diese nehmen in der Regel nur wenige Sekunden Zeit in Anspruch und benötigen nicht mehr Minuten oder sogar Stunden wie in früheren Versionen.

Das Partitionieren einer Tabelle oder eines Indexes kann die Abfrageleistung verbessern, wenn die Partitionen basierend auf der Art der häufig ausgeführten Abfragen und der Hardwarekonfiguration ordnungsgemäß entworfen werden. Weitere Informationen finden Sie unter Entwerfen von Partitionen zum Steigern der Abfrageleistung.

Partitionierung wird oftmals in Verbindung mit SQL Server-Replikation verwendet. Mithilfe von Partitionen können Sie ggf. die Leistung von Transaktions- und Mergereplikation optimieren, indem Sie die vom Replikationssystem zu verwaltende Daten- und Metadatenmenge effektiv reduzieren. Replikation unterstützt maximal 1.024 Partitionen pro Tabelle. Weitere Informationen finden Sie unter Replizieren partitionierter Tabellen und Indizes.

Als Beispiel für die Anwendung einer Partitionierungslösung in einer realen Datenbank steht Ihnen in der AdventureWorks2008R2-Beispieldatenbank ein Partitionierungsszenario zur Verfügung, das Sie implementieren können. Dieses Szenario wird in Partitionierung in der AdventureWorks2008R2-Beispieldatenbank erklärt.

Partitionierungsarchitektur

In SQL Server werden alle Tabellen und Indizes selbst dann als partitioniert betrachtet, wenn sie aus nur einer Partition bestehen. Im Wesentlichen bilden Partitionen die Grundeinheit der Organisation in der physikalischen Architektur aus Tabellen und Indizes. Dies bedeutet, dass die logische und physikalische Architektur der Tabellen und Indizes, die aus mehreren Partitionen bestehen, die Architektur von Tabellen und Indizes mit nur einer Partition spiegeln. Weitere Informationen finden Sie unter Organisationsstruktur von Tabellen und Indizes.