Arbeiten mit Sortierschlüsseln - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Arbeiten mit Sortierschlüsseln

Anmerkung

Wir empfehlen, Ihre Tabellen mit SORTKEY AUTO zu erstellen. Wenn Sie dies tun, verwendet Amazon Redshift die automatische Tabellenoptimierung, um den Sortierschlüssel auszuwählen. Weitere Informationen finden Sie unter Arbeiten mit automatischer Tabellenoptimierung. Der Rest dieses Abschnitts enthält Details zur Sortierreihenfolge.

Wenn Sie eine Tabelle erstellen, können Sie alternativ eine oder mehrere ihrer Spalten als Sortierschlüssel definieren. Wenn Daten zum ersten Mal in die leere Tabelle geladen werden, werden die Zeilen auf dem Datenträger in sortierter Reihenfolge gespeichert. Die Informationen zu Sortierschlüsselspalten werden an den Abfrageplaner übergeben. Der Planer verwendet diese Informationen zum Erstellen von Plänen, die die Sortierung der Daten nutzen. Weitere Informationen finden Sie unter CREATE TABLE. Informationen zu bewährten Methoden beim Erstellen eines Sortierschlüssels finden Sie unter Auswahl des besten Sortierschlüssels.

Die Sortierung ermöglicht eine effiziente Verarbeitung von Prädikaten mit eingeschränkten Bereichen. Amazon Redshift speichert Spaltendaten in 1-MB-Blöcken. Die Mindest- und Maximalwerte für jeden Block werden als Teil der Metadaten gespeichert. Wenn eine Abfrage ein Prädikat mit eingeschränktem Bereich verwendet, kann der Abfrageverarbeiter die Mindest- und Maximalwerte verwenden, um während Tabellenscans große Mengen von Blöcken schnell zu überspringen. Angenommen, eine Tabelle speichert Daten aus fünf Jahren, die nach Datum sortiert sind, und eine Abfrage gibt einen Datumsbereich von einem Monat an. In diesem Fall können Sie bis zu 98 Prozent der Festplattenblöcke aus dem Scan entfernen. Wenn die Daten nicht sortiert sind, müssen mehr Datenträgerblöcke (möglicherweise alle) gescannt werden.

Sie können einen zusammengesetzten oder einen überlappenden Sortierschlüssel angeben. Ein zusammengesetzter Sortierschlüssel ist effizienter, wenn Abfrageprädikate ein Präfix verwenden, das ein Teilbereich der Sortierschlüsselspalten ihrer Reihenfolge nach ist. Ein überlappender Sortierschlüssel gewichtet jede Spalte im Sortierschlüssel gleich, sodass Abfrageprädikate jeden Teilbereich der Spalten, aus denen der Sortierschlüssel besteht, in jeder beliebigen Reihenfolge verwenden können.

Um die Auswirkungen des gewählten Sortierschlüssels auf die Abfrageleistung zu verstehen, verwenden Sie den Befehl EXPLAIN. Weitere Informationen finden Sie unter Workflow der Abfrageplanung und -ausführung.

Um einen Sortiertyp zu definieren, verwenden Sie die Schlüsselwörter INTERLEAVED oder COMPOUND mit Ihrer CREATE TABLE- oder CREATE TABLE AS-Anweisung. Der Standard ist COMPOUND. COMPOUND wird empfohlen, wenn Ihre Tabellen regelmäßig mit INSERT-, UPDATE- oder DELETE-Operationen aktualisiert werden. Ein INTERLEAVED-Sortierschlüssel kann maximal acht Spalten verwenden. Je nach Daten und Cluster-Größe benötigt VACUUM REINDEX deutlich mehr Zeit als VACUUM FULL, da ein zusätzlicher Schritt zur Analyse der überlappenden Sortierschlüssel ausgeführt wird. Die Sortier- und Zusammenführungsoperation für überlappende Tabellen kann länger dauern, weil die überlappende Sortierung möglicherweise mehr Zeilen als eine zusammengesetzte Sortierung neu anordnen muss.

Um die Sortierschlüssel für eine Tabelle anzuzeigen, führen Sie eine Abfrage für die Systemansicht SVV_TABLE_INFO aus.

Mehrdimensionale Datenlayout-Sortierung (Vorschau)

Im Folgenden finden Sie eine Dokumentation zur Vorschauversion für die mehrdimensionale Datenlayout-Sortierung von Tabellen. Sowohl die Dokumentation als auch die Funktion können sich ändern. Wir empfehlen, diese Funktion nur mit Testclustern und nicht in Produktionsumgebungen zu verwenden. Die Bedingungen für Vorversionen finden Sie unter Beta-Service-Teilnahme in den AWS-Servicebedingungen.
Anmerkung

Dieses Feature ist nur bei Verwendung von Vorschau-Clustern und Vorschau-Arbeitsgruppen verfügbar. Weitere Informationen zum Einrichten von Vorschau-Clustern finden Sie unter Erstellen eines Vorschau-Clusters im Amazon-Redshift-Verwaltungshandbuch. Weitere Informationen zum Einrichten von Vorschau-Arbeitsgruppen finden Sie unter Erstellen einer Vorschau-Arbeitsgruppe im Amazon-Redshift-Verwaltungshandbuch.

Ein mehrdimensionaler Datenlayout-Sortierschlüssel ist eine Art AUTO-Sortierschlüssel, der auf sich wiederholenden Prädikaten basiert, die in einem Workload vorkommen. Wenn Ihr Workload sich wiederholende Prädikate enthält, kann Amazon Redshift die Tabellen-Scan-Leistung verbessern, indem Datenzeilen, die den sich wiederholenden Prädikaten entsprechen, gekoppelt werden. Anstatt die Daten einer Tabelle in strikter Spaltenreihenfolge zu speichern, speichert ein mehrdimensionaler Datenlayout-Sortierschlüssel Daten, indem er sich wiederholende Prädikate analysiert, die in einem Workload vorkommen. In einem Workload kann es mehr als ein sich wiederholendes Prädikat geben. Je nach Workload kann diese Art von Sortierschlüssel die Leistung vieler Prädikate verbessern. Amazon Redshift bestimmt automatisch, ob diese Sortierschlüsselmethode für Tabellen verwendet werden soll, die mit einem AUTO-Sortierschlüssel definiert sind.

Angenommen, Sie haben eine Tabelle, deren Daten in Spaltenreihenfolge sortiert sind. Möglicherweise müssen viele Datenblöcke untersucht werden, um festzustellen, ob sie den Prädikaten Ihres Workloads entsprechen. Wenn die Daten jedoch in Prädikatreihenfolge auf der Festplatte gespeichert sind, müssen weniger Blöcke gescannt werden, um die Abfrage durchzuführen. In diesem Fall ist die Verwendung eines mehrdimensionalen Datenlayout-Sortierschlüssels von Vorteil.

Informationen dazu, ob eine Abfrage einen mehrdimensionalen Datenlayoutschlüssel verwendet, finden Sie in der step_attribute-Spalte der SYS_QUERY_DETAIL-Ansicht. Wenn der Wert multi-dimensional ist, wurde ein mehrdimensionales Datenlayout für die Abfrage verwendet. Informationen dazu, ob eine mit dem AUTO-Sortierschlüssel definierte Tabelle ein mehrdimensionales Datenlayout verwendet, finden Sie in der sortkey1-Spalte der SVV_TABLE_INFO-Ansicht. Wenn der Wert padb_internal_mddl_key_col ist, wurde ein mehrdimensionales Datenlayout für den Tabellensortierschlüssel verwendet.

Um zu verhindern, dass Amazon Redshift einen mehrdimensionalen Sortierschlüssel für das Datenlayout verwendet, wählen Sie eine andere Tabellen-Sortierschlüsseloption als SORTKEY AUTO. Weitere Informationen zu SORTKEY-Optionen finden Sie unter CREATE TABLE.

Zusammengesetzter Sortierschlüssel

Ein zusammengesetzter Sortierschlüssel besteht aus allen in der Sortierschlüsseldefinition aufgelisteten Spalten in der Reihenfolge ihrer Auflistung. Ein zusammengesetzter Sortierschlüssel ist dann am nützlichsten, wenn der Filter einer Abfrage Bedingungen wie Filter und Joins anwendet, die ein Präfix der Sortierschlüssel verwenden. Die Leistungsvorteile einer Sortierung mit einem zusammengesetzten Schlüssel nehmen ab, wenn Abfragen ausschließlich von sekundären Sortierspalten abhängig sind, ohne dass die primären Spalten referenziert werden. Der Standardsortiertyp ist COMPOUND.

Zusammengesetzte Sortierschlüssel können Joins, GROUP BY- und ORDER BY-Operationen sowie Fensterfunktionen, die PARTITION BY und ORDER BY verwenden, beschleunigen. Beispielsweise kann ein Zusammenführungs-Join, der häufig schneller als ein Jash-Join ist, ausgeführt werden, wenn die Daten anhand der Join-Spalten verteilt und vorsortiert sind. Zusammengesetzte Sortierschlüssel können auch zur Verbesserung der Kompression beitragen.

Während Sie einer sortierten Tabelle Zeilen hinzufügen, die bereits Daten enthält, wächst die nicht sortierte Region. Dies wirkt sich deutlich auf die Leistung aus. Der Effekt ist größer, wenn die Tabelle eine überlappende Sortierung verwendet, besonders, wenn die Sortierspalten Daten enthalten, die monoton zunehmen, beispielsweise Datums- oder Zeitstempelspalten. Führen Sie regelmäßig eine VACUUM-Operation aus, besonders nach dem Laden großer Mengen von Daten, um die Daten neu zu sortieren und zu analysieren. Weitere Informationen finden Sie unter Verwalten der Größe der nicht sortierten Region. Nach der Bereinigung der Daten, um sie neu zu sortieren, stellt es eine bewährte Methode dar, einen -Befehl auszuführen, um die statistischen Metadaten für den Abfrageplaner zu aktualisieren. Weitere Informationen finden Sie unter Analysieren von Tabellen.

Überlappender Sortierungsschlüssel

Eine überlappende Sortierung gewichtet alle Spalten oder Teilbereiche von Spalten im Sortierschlüssel gleich. Wenn verschiedene Abfragen verschiedene Spalten als Filter verwenden, können Sie die Leistung dieser Abfragen häufig verbessern, indem Sie einen überlappenden Sortierstil verwenden. Wenn eine Abfrage einschränkende Prädikate für sekundäre Sortierspalten verwendet, wird die Abfrageleistung durch die überlappende Sortierung im Vergleich zur zusammengesetzten Sortierung deutlich verbessert.

Wichtig

Verwenden Sie keinen überlappenden Sortierschlüssel in Spalten mit monoton ansteigenden Attributen, wie Identitätsspalten, Daten oder Zeitstempel.

Die Leistungsverbesserungen, die Sie durch die Implementierung eines überlappenden Sortierschlüssels erzielen, sollten mit den längeren Lade- und Bereinigungszeiten abgewogen werden.

Überlappende Sortierungen sind in Verbindung mit hoch selektiven Abfragen, die nach einem oder mehreren Sortierschlüsselspalten in der WHERE-Klausel filtern, am effektivsten, beispielsweise select c_name from customer where c_region = 'ASIA'. Die Vorteile der überlappenden Sortierung nehmen mit der Zahl der sortierten Spalten zu, die eingeschränkt wurden.

Eine überlappende Sortierung ist für große Tabellen effektiver. Die Sortierung wird auf jedes Slice angewendet. Daher ist eine überlappende Sortierung am effektivsten, wenn eine Tabelle groß genug ist, um mehrere 1-MB-Blöcke pro Slice zu beanspruchen. Hier kann der Abfrageprozessor einen erheblichen Teil der Blöcke mit restriktiven Prädikaten überspringen. Um die Zahl der von einer Tabelle verwendeten Blöcke anzuzeigen, führen Sie eine Abfrage für die Systemansicht STV_BLOCKLIST aus.

Beim Sortieren einer einzelnen Spalte kann eine überlappende Sortierung zu einer besseren Leistung als eine zusammengesetzte Sortierung führen, wenn die Spalten ein langes gemeinsames Präfix haben. Beispielsweise beginnen URLs in der Regel mit „http://www“. Zusammengesetzte Sortierschlüssel verwenden eine begrenzte Zahl von Zeichen aus dem Präfix, was zu zahlreichen duplizierten Schlüsseln führt. Überlappende Sortierungen verwenden ein internes Kompressionsschema für Zonenzuweisungswerte. Daher können sie Spaltenwerte besser unterscheiden, die ein langes gemeinsames Präfix haben.

Bei der Migration von bereitgestellten Amazon-Redshift-Clustern zu Amazon Redshift Serverless konvertiert Redshift Tabellen mit überlappenden Sortierschlüsseln und DISTSTYLE KEY in zusammengesetzte Sortierschlüssel. Der DISTSTYLE ändert sich nicht. Weitere Informationen zu Verteilungsstilen finden Sie unter Arbeiten mit Datenverteilungsstilen.

VACUUM REINDEX

Während Sie einer sortierten Tabelle Zeilen hinzufügen, die bereits Daten enthält, kann die Leistung mit der Zeit nachlassen. Diese Verschlechterung tritt sowohl für zusammengesetzte als auch für überlappende Sortierungen auf, wirkt sich jedoch auf überlappende Tabellen stärker aus. Eine VACUUM-Operation stellt die Sortierreihenfolge wieder her. Die Operation kann jedoch im Fall von überlappenden Tabellen länger dauern, da die Zusammenführung neuer überlappender Daten bedeuten kann, dass jeder Datenblock geändert werden muss.

Wenn Tabellen zum ersten Mal geladen werden, analysiert Amazon Redshift die Verteilung der Werte in den Sortierschlüsselspalten und verwendet diese Informationen, um eine optimale Überlappung der Sortierschlüsselspalten zu erzielen. Mit zunehmender Größe der Tabelle kann sich die Verteilung der Werte in den Sortierschlüsselspalten verändern oder verzerren, besonders im Fall von Datums- oder Zeitstempelspalten. Wenn die Verzerrung zu groß wird, wirkt sich dies möglicherweise auf die Leistung aus. Um die Sortierschlüssel neu zu indizieren und die Leistung wiederherzustellen, führen Sie den Befehl VACUUM mit dem Schlüsselwort REINDEX aus. Da ein zusätzlicher Analysedurchgang für die Daten notwendig ist, kann VACUUM REINDEX im Fall überlappender Tabellen länger als eine VACUUM-Standardoperation dauern. Um Informationen zu Verzerrungen der Schlüsselverteilung und zum letzten Neuindizierungszeitpunkt anzuzeigen, führen Sie eine Abfrage für die Systemansicht SVV_INTERLEAVED_COLUMNS aus.

Weitere Informationen dazu, wie häufig VACUUM ausgeführt werden sollte und wann VACUUM REINDEX ausgeführt werden sollte, finden Sie unter Entscheidung über die Neuindizierung.