Für die Abfrageleistung relevante Faktoren - 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.

Für die Abfrageleistung relevante Faktoren

Die Abfrageleistung kann durch eine Reihe von Faktoren beeinflusst werden. Wie schnell Ihre Abfragen ausgeführt werden, hängt von den folgenden Aspekten Ihrer Daten, Cluster und Datenbankoperationen ab.

  • Anzahl der Knoten, Prozessoren oder Slices – Ein Rechenknoten wird in Slices aufgeteilt. Mehr Knoten bedeuten auch mehr Prozessoren und mehr Slices; dadurch können Abfragen schneller verarbeitet werden, weil mehr Teile der Abfrage gleichzeitig auf die Slices verteilt werden können. Mehr Knoten bedeuten jedoch auch, dass die Kosten für Verwaltungsoperationen höher sind. Es muss also bei der Anzahl der zu verwendenden Slices auf ein für Ihr System ausgewogenes Verhältnis zwischen Kosten und Leistung geachtet werden. Weitere Informationen zur Amazon-Redshift-Clusterarchitektur finden Sie unter Architektur des Data Warehouse-Systems.

  • Knotentypen – Ein Amazon-Redshift-Cluster kann einen von mehreren Knotentypen 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. Weitere Informationen zu den einzelnen Knotentypen finden Sie unter Übersicht über Amazon-Redshift-Cluster im Amazon-Redshift-Verwaltungshandbuch.

  • Datenverteilung – Amazon Redshift speichert Tabellendaten in den Rechenknoten entsprechend dem Verteilungsstil der 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. Weitere Informationen finden Sie unter Arbeiten mit Datenverteilungsstilen.

  • Datensortierreihenfolge – Amazon Redshift speichert die Tabellendaten auf der Festplatte in sortierter Form gemäß den Sortierschlüsseln einer Tabelle. Der Abfrageoptimierer und der Abfrageprozessor nutzen Informationen dazu, an welcher Stelle die Daten gespeichert sind, aus, um die Anzahl der zu scannenden Blöcke zu verringern und so die Ausführungsgeschwindigkeit der Abfrage zu verbessern. Weitere Informationen finden Sie unter Arbeiten mit Sortierschlüsseln.

  • Datensatzgröße – Eine größere Datenmenge im Cluster kann Abfragen verlangsamen, da mehr Zeilen gescannt und neu verteilt werden müssen. Sie können diese Effekt verringern, indem Sie die Daten regelmäßig komprimieren und archivieren, aber auch indem Sie mit einem Prädikat das Dataset für die Abfrage beschränken.

  • Gleichzeitige Operationen – Die gleichzeitige Ausführung mehrerer Operationen kann die Abfrageleistung beeinträchtigen. Jede Operation belegt einen oder mehrere Plätze in einer verfügbaren Abfragewarteschlange und verbraucht den Speicher für diese Plätze. Wenn gleichzeitig weitere Operationen ausgeführt werden, sind möglicherweise nicht genügend Plätze in Abfragewarteschlangen verfügbar. In diesem Fall kann die Abfrage erst dann verarbeitet werden, wenn wieder Plätze verfügbar sind. Weitere Informationen zum Erstellen und Konfigurieren von Abfragewarteschlangen finden Sie unter Implementierung von Workload Management.

  • Abfragestruktur – Die Abfrageleistung richtet sich auch danach, wie Ihre Abfrage geschrieben ist. Achten Sie bei der Formulierung von Abfragen darauf, dass jeweils so wenig Daten wie möglich und nur so viele Daten wie nötig verarbeitet und zurückgegeben werden. Weitere Informationen finden Sie unter Bewährte Methoden für die Gestaltung von Abfragen mit Amazon Redshift.

  • Codekompilierung – 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. Bei der Generierung und Kompilierung des Codes bei der erstmaligen Ausführung fallen stets auch Kosten für die Verwaltung der Operationen an. Aus diesem Grund kann die Abfrageleistung bei der ersten Ausführung signifikant von nachfolgenden Ausführungen abweichen. Diese Kosten für den Verwaltungsaufwand machen sich insbesondere bemerkbar, wenn Sie nur einmal verwendete Abfragen ausführen. Wenn Sie die typische Ausführungszeit der Abfrage ermitteln möchten, messen Sie die Zeit, die sich bei der zweiten Ausführung ergibt. 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 Ausführungen derselben Abfrage werden schneller ausgeführt, da sie die Kompilierungsphase überspringen.

    Der Cache ist nicht versionsübergreifend mit Amazon Redshift kompatibel, daher wird der Kompilierungs-Cache gelöscht und der Code neu kompiliert, wenn Abfragen nach einem Versions-Upgrade ausgeführt werden. Wenn für Ihre Abfragen strenge SLAs gelten, empfehlen wir Ihnen, Abfragesegmente, die Daten aus Cluster-Tabellen scannen, vorab auszuführen. Dadurch kann Amazon Redshift die Basisdaten der Tabelle zwischenspeichern, wodurch die Planungszeit für Abfragen nach einem Versions-Upgrade reduziert wird. 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.