Abfrageleistungsfaktoren für Amazon Redshift - AWS Präskriptive Leitlinien

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.

Abfrageleistungsfaktoren für Amazon Redshift

Die Abfrageleistung kann durch eine Reihe von Faktoren beeinflusst werden. Die folgenden Aspekte Ihrer Daten-, Cluster- und Datenbankoperationen spielen alle eine Rolle dabei, wie schnell Ihre Abfragen verarbeitet werden:

Tabelleneigenschaften

Amazon Redshift-Tabellen sind die grundlegenden Einheiten für das Speichern von Daten in Amazon Redshift, und jede Tabelle hat eine Reihe von Eigenschaften, die ihr Verhalten und ihre Zugänglichkeit bestimmen. Zu diesen Eigenschaften gehören Sortierung, Verteilungsstil, Komprimierungskodierung und viele andere. Das Verständnis dieser Eigenschaften ist entscheidend für die Optimierung der Leistung, Sicherheit und Kosteneffektivität von Amazon Redshift Redshift-Tabellen.

Schlüssel sortieren

Amazon Redshift speichert Daten auf der Festplatte in sortierter Reihenfolge gemäß den Sortierschlüsseln einer Tabelle. Der Abfrageoptimierer und der Abfrageprozessor verwenden die Informationen darüber, wo sich die Daten innerhalb eines Rechenknotens befinden, um die Anzahl der Blöcke zu reduzieren, die gescannt werden müssen. Dies verbessert die Abfragegeschwindigkeit erheblich, da die zu verarbeitende Datenmenge reduziert wird. Es wird empfohlen, Sortierschlüssel zu verwenden, um Filter in der WHERE Klausel zu vereinfachen. Weitere Informationen finden Sie unter Arbeiten mit Sortierschlüsseln in der Amazon Redshift Redshift-Dokumentation.

Datenkompression

Durch die Datenkomprimierung werden die Speicheranforderungen reduziert, wodurch Festplatten-E/A reduziert und die Abfrageleistung verbessert wird. Wenn Sie eine Abfrage ausführen, werden die komprimierten Daten in den Speicher gelesen und dann dekomprimiert, wenn die Abfrage ausgeführt wird. Indem weniger Daten in den Speicher geladen werden, kann Amazon Redshift mehr Speicher für die Analyse der Daten zuweisen. Da der spaltenorientierte Speicher ähnliche Daten sequentiell speichert, kann Amazon Redshift adaptive Komprimierungskodierungen anwenden, die speziell an spaltenartige Datentypen gebunden sind. Die beste Methode, die Datenkomprimierung für Tabellenspalten zu aktivieren, besteht darin, die AUTO Option in Amazon Redshift zu verwenden, um optimale Komprimierungskodierungen anzuwenden, wenn Sie die Tabelle mit Daten laden. Weitere Informationen zur automatischen Datenkomprimierung finden Sie unter Laden von Tabellen mit automatischer Komprimierung in der Amazon Redshift Redshift-Dokumentation.

Datenverteilung

Amazon Redshift speichert Daten auf den Rechenknoten entsprechend dem Verteilungsstil einer Tabelle. Wenn sie eine Abfrage ausführen, führt der Abfrageoptimierer nach Bedarf eine Neuverteilung der Daten auf die Datenverarbeitungsknoten durch, um Join- oder Aggregierungsoperationen durchführen zu können. Durch die Auswahl eines geeigneten Tabellenverteilungsstils können die Auswirkungen des Neuverteilungsschritts dadurch minimiert werden, dass die Daten dort platziert sind, wo sie benötigt werden, bevor die Join-Operationen ausgeführt werden. Wir empfehlen die Verwendung von Verteilungsschlüsseln, um die gängigsten Verknüpfungen zu ermöglichen. Weitere Informationen finden Sie unter Arbeiten mit Datenverteilungsstilen in der Amazon Redshift Redshift-Dokumentation.

Wartung von Tabellen

Obwohl Amazon Redshift für die meisten Workloads sofort eine branchenführende Leistung bietet, ist für den reibungslosen Betrieb der Amazon Redshift Redshift-Cluster Wartung erforderlich. Beim Aktualisieren und Löschen von Daten entstehen tote Zeilen, die entfernt werden müssen, und selbst Tabellen, die nur Anhängen, müssen neu sortiert werden, wenn die Reihenfolge der Anfügungen nicht mit dem Sortierschlüssel übereinstimmt.

Vacuum

Der Vakuumvorgang in Amazon Redshift ist für den Zustand und die Wartung Ihres Amazon Redshift Redshift-Clusters unerlässlich. Er wirkt sich auch auf die Leistung von Abfragen aus. Da sowohl Löschungen als auch Aktualisierungen die alten Daten kennzeichnen, sie aber nicht wirklich entfernen, müssen Sie den Speicherplatz zurückgewinnen, der durch Tabellenzeilen belegt war, die durch die vorherigen UND-Operationen zum Löschen markiert wurden. UPDATE DELETE Amazon Redshift kann Tabellen im Hintergrund automatisch sortieren und einen VACUUM DELETE Vorgang ausführen.

Um Tabellen nach einem Laden oder einer Reihe von inkrementellen Updates zu bereinigen, können Sie auch den VACUUM-Befehl ausführen (entweder gegen die gesamte Datenbank oder gegen einzelne Tabellen). Wenn Tabellen Sortierschlüssel haben und das Laden von Tabellen nicht so optimiert ist, dass sie beim Einfügen sortiert werden, müssen Sie die Daten mithilfe von Leerzeichen sortieren (was für die Leistung entscheidend sein kann). Weitere Informationen finden Sie unter Vacuuming-Tabellen in der Amazon Redshift Redshift-Dokumentation.

Analysieren

Der ANALYZE Vorgang aktualisiert statistische Metadaten in den Tabellen in einer Amazon Redshift Redshift-Datenbank. Wenn die Statistiken aktuell sind, kann dies die Leistung bei Abfragen verbessern, weil die Abfrageplanung dann optimale Pläne auswählen kann. Amazon Redshift überwacht fortlaufend Ihre Datenbank und führt automatisch Analyseoperationen im Hintergrund durch. Um die Auswirkungen auf Ihre Systemleistung so gering wie möglich zu halten, wird der ANALYZE Vorgang in Zeiten mit geringer Auslastung automatisch ausgeführt. Wenn Sie sich für die explizite Ausführung entscheidenANALYZE, gehen Sie wie folgt vor:

  • Führen Sie den ANALYZE Befehl aus, bevor Sie Abfragen ausführen.

  • Führen Sie den ANALYZE Befehl routinemäßig am Ende jedes regulären Lade- oder Aktualisierungszyklus in der Datenbank aus.

  • Führen Sie den ANALYZE Befehl für neue Tabellen aus, die Sie erstellen, und für bestehende Tabellen oder Spalten, die erheblich geändert wurden.

  • Erwägen Sie, ANALYZE Operationen nach unterschiedlichen Zeitplänen für verschiedene Tabellen- und Spaltentypen auszuführen, je nachdem, wie sie in Abfragen verwendet werden und wie häufig sie geändert werden.

  • Verwenden Sie die PREDICATE COLUMNS Klausel, wenn Sie den Befehl ausführen, um Zeit zu sparen und Ressourcen zu bündeln. ANALYZE

Cluster-Konfiguration

Ein Cluster ist eine Sammlung von Knoten, die das eigentliche Speichern und Verarbeiten von Daten übernehmen. Die richtige Einrichtung Ihres Amazon Redshift Redshift-Clusters ist entscheidend, wenn Sie Folgendes erreichen möchten:

  • Hohe Skalierbarkeit und Parallelität

  • Effizienter Einsatz von Amazon Redshift

  • Bessere Leistung

  • Niedrigere Kosten

Knotentyp

Ein Amazon Redshift Redshift-Cluster kann einen von mehreren Knotentypen (RA3 DC2, und DS2) verwenden. Die verschiedenen Knotentypen sind in verschiedenen Größen und mit unterschiedlichen Grenzwerten verfügbar, was eine geeignete Skalierung Ihres Clusters ermöglicht. Die Knotengröße bestimmt die Speicherkapazität, den Arbeitsspeicher, die CPU und den Preis für die einzelnen Knoten in dem Cluster. Die Kosten- und Leistungsoptimierung beginnt mit der Auswahl des richtigen Knotentyps und der richtigen Größe. Weitere Informationen zu Knotentypen finden Sie unter Überblick über Amazon Redshift Redshift-Cluster in der Amazon Redshift Redshift-Dokumentation.

Knotengröße, Anzahl der Knoten und Bereiche

Ein Datenverarbeitungsknoten ist in Slices aufgeteilt. Mehr Knoten bedeuten mehr Prozessoren und Bereiche, wodurch Ihre Abfragen schneller verarbeitet werden können, indem Teile der Abfrage gleichzeitig über die Bereiche hinweg ausgeführt werden. Mehr Knoten bedeuten jedoch auch höhere Kosten. Das bedeutet, dass Sie das richtige Verhältnis zwischen Kosten und Leistung für Ihr System finden müssen. Weitere Informationen zur Amazon Redshift Redshift-Clusterarchitektur finden Sie unter Data Warehouse-Systemarchitektur in der Amazon Redshift Redshift-Dokumentation.

Workload-Management

Amazon Redshift Workload Management (WLM) ermöglicht es Benutzern, Workload-Warteschlangen flexibel mit Prioritäten zu verwalten, sodass kurze, schnell laufende Abfragen nicht in Warteschlangen hinter lang andauernden Abfragen stecken bleiben. Automatic WLM verwendet Algorithmen für maschinelles Lernen (ML), um Abfragen zu profilieren und sie mit den entsprechenden Ressourcen in die entsprechende Warteschlange zu stellen und gleichzeitig die Parallelität der Abfragen und die Speicherzuweisung zu verwalten. Weitere Informationen zu WLM finden Sie unter Implementieren des Workload-Managements in der Amazon Redshift Redshift-Dokumentation.

Short Query Acceleration

Short Query Acceleration (SQA) priorisiert Abfragen mit kurzer Laufzeit vor Abfragen mit langer Laufzeit. SQA führt Abfragen in einem dafür vorgesehenen Bereich aus, sodass SQA-Abfragen nicht gezwungen sind, hinter längeren Abfragen in Warteschlangen zu warten. SQA priorisiert nur Warteschlangen, die über eine kurze Zeit ausgeführt werden und sich in einer benutzerdefinierten Warteschlange befinden. Wenn Sie SQA verwenden, werden Abfragen mit kurzer Laufzeit schneller ausgeführt, und Sie können schneller Ergebnisse sehen. Wenn Sie SQA aktivieren, können Sie WLM-Warteschlangen, die für Abfragen mit kurzer Laufzeit vorgesehen sind, reduzieren oder eliminieren. Darüber hinaus müssen Abfragen mit langer Laufzeit nicht um Slots in einer WLM-Warteschlange kämpfen. Das bedeutet, dass Sie Ihre WLM-Warteschlangen so konfigurieren können, dass weniger Abfrageslots verwendet werden. Wenn Sie weniger Parallelität verwenden, wird der Abfragedurchsatz erhöht und die Gesamtsystemleistung für die meisten Workloads verbessert. Weitere Informationen zu SQA finden Sie unter Arbeiten mit Short Query Acceleration in der Amazon Redshift Redshift-Dokumentation.

SQL-Abfrage

Eine Datenbankabfrage ist eine Anforderung von Daten aus einer Datenbank. Die Anfrage sollte in einem Amazon Redshift Redshift-Cluster mit SQL eingehen. Amazon Redshift unterstützt SQL-Client-Tools, die über Java Database Connectivity (JDBC) und Open Database Connectivity (ODBC) eine Verbindung herstellen. Sie können die meisten SQL-Client-Tools verwenden, die JDBC- oder ODBC-Treiber unterstützen.

Struktur der Abfrage

Die Art und Weise, wie Ihre Abfrage geschrieben ist, wirkt sich stark auf ihre Leistung aus. Wir empfehlen Ihnen, Abfragen zu schreiben, um so wenig Daten wie nötig zu verarbeiten und zurückzugeben, um Ihre Anforderungen zu erfüllen. Weitere Informationen zur Strukturierung Ihrer Abfragen finden Sie im Abschnitt Bewährte Methoden zum Entwerfen von Amazon Redshift Redshift-Abfragen in diesem Handbuch.

Code-Kompilierung

Amazon Redshift generiert und kompiliert Code für jeden Abfrageausführungsplan. Der kompilierte Code wird schneller ausgeführt, weil der Verwaltungsaufwand für den Interpreter entfällt. In der Regel fallen bei der ersten Generierung und Kompilierung des Codes einige Gemeinkosten an. Aus diesem Grund kann die Abfrageleistung bei der ersten Ausführung signifikant von nachfolgenden Ausführungen abweichen. Die Gemeinkosten können sich besonders bemerkbar machen, wenn Sie einmalige Abfragen ausführen. Es wird empfohlen, die Abfrage ein zweites Mal auszuführen, um ihre typische Leistung zu ermitteln.

Amazon Redshift verwendet einen Serverless-Kompilierungsservice, um Abfragekompilierungen über die Rechenressourcen eines Amazon-Redshift-Clusters hinaus zu skalieren. Die kompilierten Codesegmente werden lokal auf dem Cluster und in einem praktisch unbegrenzten Cache gespeichert. Dieser Cache bleibt nach dem Neustart des Clusters bestehen. Nachfolgende Aufrufe derselben Abfrage werden schneller ausgeführt, da sie die Kompilierungsphase überspringen können. Der Cache ist nicht versionsübergreifend mit Amazon Redshift kompatibel, daher wird der Code neu kompiliert, wenn Abfragen nach einem Versions-Upgrade ausgeführt werden. Durch die Verwendung eines skalierbaren Kompilierungsservice ist Amazon Redshift in der Lage, Code parallel zu kompilieren, um eine konstant schnelle Leistung zu bieten. Die Ausdehnung der Workload hängt von der Komplexität und Nebenläufigkeit von Abfragen ab.