View a markdown version of this page

Arbeiten mit Aurora DSQL EXPLAIN-Plänen - 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.

Arbeiten mit Aurora DSQL EXPLAIN-Plänen

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 EXPLAIN-Pläne von Aurora DSQL und heben die Gemeinsamkeiten und Unterschiede im Vergleich zu PostgreSQL hervor. Wir werden die verschiedenen Arten von Scanvorgängen behandeln, die in Aurora DSQL verfügbar sind, und Ihnen helfen, die Kosten für die Ausführung Ihrer Abfragen zu verstehen.

EXPLAIN-Pläne FÜR PostgreSQL UND Aurora DSQL

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 werden 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, auch Nicht-Schlüsselspalten einzubeziehen

Filterfunktionen

Indexzustand, Heap-Filter

Indexbedingung, Speicherfilter, Abfrageprozessor-Filter

Scan-Typen

Sequentieller Scan, Indexscan, Nur-Index-Scan

Vollständiger Scan, Nur-Index-Scan, Index-Scan

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 durch 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 Datenverarbeitung vom Speicher trennt, sodass Filter zu einem früheren Zeitpunkt des Ausführungspfads 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.

Die wichtigsten Elemente der Aurora DSQL EXPLAIN-Pläne

Aurora DSQL EXPLAIN-Pläne enthalten detaillierte Informationen darüber, wie Abfragen ausgeführt werden, einschließlich der Stelle, an der 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 zum Navigieren im Index verwendet werden. Die effizienteste Filterung, die die Anzahl der gescannten Daten reduziert. In Aurora DSQL können Indexbedingungen auf mehrere Ebenen des Ausführungsplans angewendet werden.

Projektionen

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

Speicherfilter

Auf Speicherebene geltende Bedingungen. Effizienter als Abfrageprozessor-Filter.

Prozessor-Filter abfragen

Bedingungen, die auf der Ebene des Abfrageprozessors angewendet werden. 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 angewendet werden, bevor große Datenmengen übertragen 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 Zustand indizieren

Wird beim Scannen des Indexes angewendet. Schränkt ein, wie viele Daten aus dem Speicher gelesen werden, und reduziert die Anzahl der Daten, die an die Rechenebene gesendet werden.

2 Speicherfilter Wird angewendet, nachdem Daten aus dem Speicher gelesen, aber bevor sie zur Berechnung gesendet werden. Ein Beispiel hierfür ist ein Filter für eine Include-Spalte eines Indexes. Reduziert die Datenübertragung, aber nicht die gelesene Menge.
3 Prozessor-Filter abfragen Wird angewendet, nachdem die Daten die Berechnungsebene 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 auf dem Speicher ausführen, sodass bei einigen Abfragen möglicherweise auf diese Art der Filterung zurückgegriffen werden muss.