Mit Aurora DSQL EXPLAIN-Plänen arbeiten - Amazon Aurora DSQL

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.

Mit Aurora DSQL EXPLAIN-Plänen arbeiten

Aurora DSQL verwendet eine ähnliche EXPLAIN-Planstruktur wie PostgreSQL, jedoch mit wichtigen Ergänzungen, die die verteilte Architektur und das Ausführungsmodell widerspiegeln.

In dieser Dokumentation geben wir einen Überblick über die Aurora DSQL EXPLAIN-Pläne und heben die Ähnlichkeiten und Unterschiede im Vergleich zu PostgreSQL hervor. Wir behandeln die verschiedenen Arten von Scanvorgängen, die in Aurora DSQL verfügbar sind, und helfen Ihnen, die Kosten für die Ausführung Ihrer Abfragen zu verstehen.

PostgreSQL VS Aurora DSQL EXPLAIN-Pläne

Aurora DSQL basiert auf der PostgreSQL-Datenbank und teilt die meisten Planstrukturen mit PostgreSQL, weist jedoch wichtige architektonische Unterschiede auf, die sich auf die Ausführung und Optimierung von Abfragen auswirken:

Feature PostgreSQL Aurora DSQL

Datenspeicherung

Heap-Speicher

Kein Heap, alle Zeilen sind durch einen eindeutigen Bezeichner indexiert

Primärschlüssel

Der Primärschlüsselindex ist von den Tabellendaten getrennt

Der Primärschlüsselindex ist die Tabelle mit allen zusätzlichen Spalten als INCLUDE-Spalten

Sekundäre Indexe

Standard-Sekundärindizes

Funktioniert genauso wie PostgreSQL, mit der Möglichkeit, Nichtschlüsselspalten einzubeziehen

Filterfunktionen

Indexbedingung, Heap-Filter

Indexbedingung, Speicherfilter, Abfrageprozessorfilter

Scan-Typen

Sequentieller Scan, Indexscan, Nur Indexscan

Vollständiger Scan, Nur Indexscan, Indexscan

Ausführung der Abfrage

Lokal in der Datenbank

Verteilt (Rechenleistung und Speicher sind getrennt)

Aurora DSQL speichert Tabellendaten direkt in der Reihenfolge der Primärschlüssel und nicht in einem separaten Heap. Jede Zeile wird durch einen eindeutigen Schlüssel identifiziert, in der Regel den Primärschlüssel, wodurch die Datenbank Suchvorgänge effizienter optimieren kann. Der architektonische Unterschied erklärt, warum Aurora DSQL in Fällen, in denen PostgreSQL möglicherweise einen sequentiellen Scan wählt, häufig Index-Only-Scans verwendet.

Ein weiterer wichtiger Unterschied besteht darin, dass Aurora DSQL die Rechenleistung vom Speicher trennt, sodass Filter früher im Ausführungspfad angewendet werden können, um Datenbewegungen zu reduzieren und die Leistung zu verbessern.

Weitere Informationen zur Verwendung von EXPLAIN-Plänen mit PostgreSQL finden Sie in der PostgreSQL EXPLAIN-Dokumentation.

Schlüsselelemente der Aurora DSQL EXPLAIN-Pläne

Aurora DSQL EXPLAIN-Pläne bieten detaillierte Informationen darüber, wie Abfragen ausgeführt werden, einschließlich der Orte, an denen gefiltert wird und welche Spalten aus dem Speicher abgerufen werden. Wenn Sie diese Ausgabe verstehen, können Sie die Abfrageleistung optimieren.

Index Cond

Bedingungen, die für die Navigation im Index verwendet werden. Effizienteste Filterung, die die Anzahl der gescannten Daten reduziert. In Aurora DSQL können Indexbedingungen auf mehreren Ebenen des Ausführungsplans angewendet werden.

Projektionen

Aus dem Speicher abgerufene Spalten. Weniger Prognosen bedeuten bessere Leistung.

Speicherfilter

Auf Speicherebene angewandte Bedingungen. Effizienter als Filter für Abfrageprozessoren.

Prozessorfilter abfragen

Auf der Ebene des Abfrageprozessors angewandte Bedingungen. Erfordert die Übertragung aller Daten vor dem Filtern, was zu einem höheren Datenverschiebungs- und Verarbeitungsaufwand führt.

Filter in Aurora DSQL

Aurora DSQL trennt Rechenleistung vom Speicher, was bedeutet, dass der Punkt, an dem Filter während der Abfrageausführung angewendet werden, erhebliche Auswirkungen auf die Leistung hat. Filter, die vor der Übertragung großer Datenmengen angewendet werden, reduzieren die Latenz und verbessern die Effizienz. Je früher ein Filter angewendet wird, desto weniger Daten müssen verarbeitet, verschoben und gescannt werden, was zu schnelleren Abfragen führt.

Aurora DSQL kann Filter in mehreren Phasen des Abfragepfads anwenden. Das Verständnis dieser Phasen ist entscheidend für die Interpretation von Abfrageplänen und die Optimierung der Leistung.

Level Typ des Filters Description
1 Indexbedingung

Wird beim Scannen des Index angewendet. Beschränkt, wie viele Daten aus dem Speicher gelesen werden, und reduziert die Anzahl der an die Rechenebene gesendeten Daten.

2 Speicherfilter Wird angewendet, nachdem Daten aus dem Speicher gelesen wurden, aber bevor sie an den Computer gesendet werden. Ein Beispiel hierfür ist ein Filter in einer Include-Spalte eines Indexes. Reduziert die Datenübertragung, aber nicht die Menge, die gelesen wird.
3 Prozessorfilter abfragen Wird angewendet, nachdem Daten die Rechenschicht erreicht haben. Alle Daten müssen zuerst übertragen werden, was die Latenz und die Kosten erhöht. Derzeit kann Aurora DSQL nicht alle Filter- und Projektionsvorgänge im Speicher durchführen, sodass einige Abfragen möglicherweise gezwungen sind, auf diese Art der Filterung zurückzugreifen.