Entscheidung über die Neuindizierung - 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.

Entscheidung über die Neuindizierung

Häufig können Sie die Abfrageleistung deutlich verbessern, indem Sie einen überlappenden Sortierstil verwenden. Mit der Zeit verschlechtert sich die Leistung jedoch möglicherweise, wenn die Verteilung der Werte in den Sortierschlüsselspalten geändert wird.

Wenn Sie zum ersten Mal eine leere verschachtelte Tabelle mit COPY oder CREATE TABLE AS laden, erstellt Amazon Redshift automatisch den verschachtelten Index. Wenn Sie zunächst eine Interleaved-Tabelle mit laden, müssen Sie den Interleaved-Index anschließend ausführenINSERT, um den Interleaved-Index zu initialisieren VACUUMREINDEX.

Während Sie Zeilen mit neuen Sortierschlüsselwerten hinzufügen, kann sich die Leistung verschlechtern, wenn die Verteilung der Werte in den Sortierschlüsselspalten geändert wird. Wenn Ihre neuen Zeilen primär innerhalb des Bereichs der vorhandenen Sortierschlüsselwerte liegen, müssen Sie keine Neuindizierung ausführen. Führen Sie VACUUM SORT ONLY oder aus, um die VACUUM FULL Sortierreihenfolge wiederherzustellen.

Das Abfragemodul kann die Sortierreihenfolge verwenden, um effizient festzulegen, welche Datenblöcke gescannt werden müssen, um eine Abfrage zu verarbeiten. Im Fall einer überlappenden Sortierung analysiert Amazon Redshift die Sortierschlüsselspaltenwerte, um die optimale Sortierreihenfolge zu ermitteln. Wenn aufgrund hinzugefügter Zeilen die Verteilung der Schlüsselwerte geändert oder verschoben wird, ist die Sortierstrategie nicht mehr optimal und der Vorteil, den die Sortierung für die Leistung hat, nimmt ab. Um die Sortierschlüsselverteilung erneut zu analysieren, können Sie eine VACUUM REINDEX ausführen. Die Neuindizierungsoperation ist zeitaufwändig. Um festzustellen, ob eine Tabelle von einer Neuindizierung profitiert, führen Sie eine Abfrage für die Ansicht SVV_INTERLEAVED_COLUMNS aus.

Beispielsweise zeigt die folgende Abfrage Details für Tabellen an, die überlappende Sortierschlüssel verwenden.

select tbl as tbl_id, stv_tbl_perm.name as table_name, col, interleaved_skew, last_reindex from svv_interleaved_columns, stv_tbl_perm where svv_interleaved_columns.tbl = stv_tbl_perm.id and interleaved_skew is not null; tbl_id | table_name | col | interleaved_skew | last_reindex --------+------------+-----+------------------+-------------------- 100048 | customer | 0 | 3.65 | 2015-04-22 22:05:45 100068 | lineorder | 1 | 2.65 | 2015-04-22 22:05:45 100072 | part | 0 | 1.65 | 2015-04-22 22:05:45 100077 | supplier | 1 | 1.00 | 2015-04-22 22:05:45 (4 rows)

Der Wert für interleaved_skew ist ein Verhältnis, das die Menge der Verschiebung angibt. Ein Wert von 1 bedeutet, dass es keine Verschiebung gegeben hat. Wenn die Schräglage größer als 1,4 ist, verbessert a in der Regel VACUUM REINDEX die Leistung, es sei denn, die Schräglage ist dem zugrunde liegenden Satz inhärent.

Sie können den Datumswert in last_reindex verwenden, um festzustellen, wie viel Zeit seit der letzten Neuindizierung verstrichen ist.