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.
VACUUM
Sortiert Zeilen neu und gewinnt Platz in einer bestimmten Tabelle oder in allen Tabellen der aktuellen Datenbank zurück.
Anmerkung
Nur Benutzer mit den erforderlichen Tabellenberechtigungen können eine Tabelle effektiv bereinigen. Wenn ohne die erforderlichen Tabellenberechtigungen ausgeführt VACUUM wird, wird der Vorgang erfolgreich abgeschlossen, hat jedoch keine Auswirkung. Eine Liste der gültigen Tabellenberechtigungen für die effektive Ausführung VACUUM finden Sie im folgenden Abschnitt Erforderliche Rechte.
Amazon Redshift sortiert Daten automatisch und läuft VACUUM DELETE im Hintergrund. Dadurch muss der Befehl nicht mehr ausgeführt werden. VACUUM Weitere Informationen finden Sie unter Bereinigen von Tabellen.
Standardmäßig VACUUM überspringt die Sortierphase für jede Tabelle, in der mehr als 95 Prozent der Tabellenzeilen bereits sortiert sind. Das Überspringen der Sortierphase kann die Leistung erheblich verbessernVACUUM. Um den standardmäßigen Sortier- oder Löschschwellenwert für eine einzelne Tabelle zu ändern, geben Sie bei der Ausführung VACUUM den Tabellennamen und den PERCENTTO-Schwellenwertparameter an.
Benutzer können auf Tabellen zugreifen, während sie bereinigt werden. Sie können Abfragen und Schreibvorgänge ausführen, während eine Tabelle gelöscht wird. Wenn jedoch Befehle der Datenmanipulationssprache (DML) und ein Vakuum gleichzeitig ausgeführt werden, kann es länger dauern. Wenn Sie DELETE AND-Anweisungen während eines Vakuumvorgangs ausführenUPDATE, kann die Systemleistung beeinträchtigt werden. VACUUMDELETEblockiert vorübergehend Aktualisierungs- und Löschvorgänge.
Amazon Redshift führt automatisch ein DELETE ONLY Vakuum im Hintergrund durch. Der automatische Vakuumvorgang wird unterbrochen, wenn Benutzer Operationen in der Datendefinitionssprache (DDL) ausführen, wie z. ALTER TABLE
Anmerkung
Die Syntax und das Verhalten von Amazon Redshift VACUUM Redshift-Befehlen unterscheiden sich erheblich von der Postgre-Operation. SQL VACUUM Die VACUUM Standardoperation in Amazon Redshift ist beispielsweise VACUUMFULL, dass Festplattenspeicher zurückgewonnen und alle Zeilen neu sortiert werden. Im Gegensatz dazu wird bei der VACUUM Standardoperation in Postgre SQL einfach Speicherplatz zurückgewonnen und für die Wiederverwendung verfügbar gemacht.
Weitere Informationen finden Sie unter Bereinigen von Tabellen.
Erforderliche Berechtigungen
Folgende Rechte sind erforderlich für: VACUUM
Superuser
Benutzer mit dem VACUUM Privileg
Tabellenbesitzer
Datenbankbesitzer, für den die Tabelle freigegeben wird.
Syntax
VACUUM [ FULL | SORT ONLY | DELETE ONLY | REINDEX | RECLUSTER ] [ [ table_name ] [ TO threshold PERCENT ] [ BOOST ] ]
Parameter
- FULL
-
Sortiert die angegebene Tabelle (oder alle Tabellen in der aktuellen Datenbank) und gibt Speicherplatz zurück, der von Zeilen belegt wurde, die durch vorherige UPDATE Operationen zum Löschen markiert wurden. DELETE VACUUMFULList die Standardeinstellung.
Eine vollständige Bereinigung führt keine Neuindizierung überlappender Tabellen aus. Um überlappende Tabellen neu zu indizieren und anschließend vollständig zu bereinigen, verwenden Sie die Option VACUUM REINDEX.
Standardmäßig VACUUM FULL überspringt die Sortierphase für alle Tabellen, die bereits zu mindestens 95 Prozent sortiert sind. Wenn die Sortierphase übersprungen werden kann, VACUUM wird in der Löschphase eine Aktion ausgeführt DELETE ONLY und Speicherplatz zurückgewonnen, sodass mindestens 95 Prozent der verbleibenden Zeilen nicht zum Löschen markiert sind.
Wenn der Sortierschwellenwert nicht erreicht wird (z. B. wenn 90 Prozent der Zeilen sortiert sind) und eine vollständige Sortierung VACUUM durchgeführt wird, wird auch ein vollständiger Löschvorgang ausgeführt, wobei Speicherplatz aus 100 Prozent der gelöschten Zeilen zurückgewonnen wird.
Sie können den Standardschwellenwert für die Bereinigung nur für einzelne Tabellen ändern. Um den Standard-Vakuumschwellenwert für eine einzelne Tabelle zu ändern, geben Sie den Tabellennamen und den PERCENTTO-Schwellenwertparameter an.
- SORT ONLY
-
Sortiert die angegebene Tabelle (oder alle Tabellen in der aktuellen Datenbank), ohne den Festplattenplatz zurückzugewinnen, der von gelöschten Zeilen freigegeben wird. Diese Option ist nützlich, wenn das Wiederherstellen von Speicherplatz nicht wichtig ist, aber das erneute Sortieren neuer Zeilen von Bedeutung ist. Ein SORT ONLY Vakuum reduziert die für Vakuumvorgänge benötigte Zeit, wenn der unsortierte Bereich keine große Anzahl gelöschter Zeilen enthält und sich nicht über den gesamten sortierten Bereich erstreckt. Für Anwendungen, für die es keine Einschränkungen in Bezug auf den Festplattenplatz gibt, die aber von Abfrageoptimierungen abhängig sind, für die sortierte Tabellenzeilen Voraussetzung sind, kann diese Art von Bereinigung nützlich sein.
Standardmäßig werden alle Tabellen VACUUM SORT ONLY übersprungen, die bereits zu mindestens 95 Prozent sortiert sind. Um den Standardschwellenwert für die Sortierung einer einzelnen Tabelle zu ändern, geben Sie bei der Ausführung VACUUM den Tabellennamen und den PERCENTTO-Schwellenwertparameter an.
- DELETE ONLY
-
Amazon Redshift führt automatisch ein DELETE ONLY Vakuum im Hintergrund durch, sodass Sie selten, wenn überhaupt, ein DELETE ONLY Vakuum ausführen müssen.
A VACUUM DELETE gibt Festplattenspeicher zurück, der von Zeilen belegt wurde, die durch vorherige DELETE Operationen zum Löschen markiert wurden, UPDATE und komprimiert die Tabelle, um den belegten Speicherplatz freizugeben. Bei einem DELETE ONLY Vakuumvorgang werden Tabellendaten nicht sortiert.
Diese Option reduziert den Zeitaufwand für Vacuum-Operationen, wenn das Wiederherstellen von Festplattenspeicher wichtig ist, aber das Neusortieren neuer Zeilen nicht wichtig ist. Diese Option kann auch nützlich sein, wenn Ihre Abfrageleistung bereits optimal ist. Eine Neusortierung von Zeilen zur Optimierung der Abfrageleistung ist nicht erforderlich.
Standardmäßig wird Speicherplatz VACUUM DELETE ONLY zurückgewonnen, sodass mindestens 95 Prozent der verbleibenden Zeilen nicht zum Löschen markiert sind. Um den Standardschwellenwert für das Löschen einer einzelnen Tabelle zu ändern, geben Sie bei der Ausführung den Tabellennamen und den PERCENTTO-Schwellenwertparameter an. VACUUM
Einige Operationen, wie
ALTER TABLE APPEND
, können dazu führen, dass Tabellen fragmentiert werden. Wenn Sie dieDELETE ONLY
-Klausel verwenden, gibt die Bereinigungsoperation Speicherplatz von fragmentierten Tabellen frei. Derselbe Schwellenwert von 95 Prozent gilt für die Defragmentierungsoperation. - REINDEXTabellenname
-
Analysiert die Verteilung der Werte in verschachtelten Sortierschlüsselspalten und führt dann einen vollständigen Vorgang aus. VACUUM Wenn verwendet REINDEX wird, ist ein Tabellenname erforderlich.
VACUUMREINDEXdauert deutlich länger VACUUMFULL, als weil die Analyse der verschachtelten Sortierschlüssel einen zusätzlichen Durchlauf erfordert. Die Sortier- und Zusammenführungsoperationen für überlappende Tabellen kann länger dauern, weil die überlappende Sortierung möglicherweise mehr Zeilen als eine zusammengesetzte Sortierung neu anordnen muss.
Wenn ein VACUUM REINDEX Vorgang beendet wird, bevor er abgeschlossen ist, setzt der nächste den VACUUM Neuindizierungsvorgang fort, bevor der vollständige Vakuumvorgang ausgeführt wird.
VACUUMREINDEXwird mit dem TO-Schwellenwert nicht unterstützt. PERCENT
- table_name
-
Der Name der zu bereinigenden Tabelle. Wenn Sie keinen Tabellennamen angeben, wird die Bereinigungsoperation auf alle Tabellen in der aktuellen Datenbank angewendet. Sie können jede permanente oder temporäre Tabelle angeben, die von Benutzern erstellt wurde. Der Befehl gilt nicht für andere Objekte wie Ansichten und Systemtabellen.
Wenn Sie den PERCENTTO-Schwellenwertparameter angeben, ist ein Tabellenname erforderlich.
- RECLUSTERTabellenname
-
Sortiert die Teile der Tabelle, die nicht sortiert sind. Teile der Tabelle, die bereits nach automatischer Tabellensortierung sortiert sind, bleiben intakt. Mit diesem Befehl werden die neu sortierten Daten nicht mit dem sortierten Bereich zusammengeführt. Es wird auch nicht der gesamte Speicherplatz zurückgewonnen, der zum Löschen markiert ist. Wenn dieser Befehl abgeschlossen ist, wird die Tabelle möglicherweise nicht vollständig sortiert angezeigt, wie das
unsorted
Feld in SVV _ TABLE _ INFO zeigt.Wir empfehlen die Verwendung VACUUM RECLUSTER für große Tabellen mit häufiger Datenerfassung und Abfragen, die nur auf die neuesten Daten zugreifen.
VACUUMRECLUSTERwird mit dem TO-Schwellenwert nicht unterstützt. PERCENT Wenn verwendet RECLUSTER wird, ist ein Tabellenname erforderlich.
VACUUMRECLUSTERwird für Tabellen mit verschachtelten Sortierschlüsseln und Tabellen mit ALL Verteilungsstil nicht unterstützt.
- table_name
-
Der Name der zu bereinigenden Tabelle. Sie können jede permanente oder temporäre Tabelle angeben, die von Benutzern erstellt wurde. Der Befehl gilt nicht für andere Objekte wie Ansichten und Systemtabellen.
- TO-Schwellenwert PERCENT
-
Eine Klausel, die den Schwellenwert angibt, bei dessen VACUUM Überschreitung die Sortierphase übersprungen wird, und den Zielschwellenwert für die Rückgewinnung von Speicherplatz in der Löschphase. Der Sortierschwellenwert ist der Prozentsatz der Gesamtzahl der Zeilen, die sich bereits in der richtigen Sortierreihenfolge für die angegebene Tabelle befinden, bevor die Bereinigung gestartet wird. Der Löschschwellenwert ist der Mindestprozentsatz der Gesamtzahl der Zeilen, die nach der Bereinigung nicht zur Löschung markiert sind.
Da die Zeilen nur dann VACUUM neu sortiert werden, wenn der Prozentsatz der sortierten Zeilen in einer Tabelle unter dem Sortierschwellenwert liegt, kann Amazon Redshift die VACUUM Zeiten oft erheblich reduzieren. Ebenso ist es oft möglich, Blöcke, die nur wenige gelöschte Zeilen enthalten, neu zu schreiben, wenn es VACUUM nicht darauf beschränkt ist, Speicherplatz aus 100 Prozent der zum Löschen markierten Zeilen zurückzugewinnen.
Wenn Sie beispielsweise 75 als Schwellenwert angeben, wird die Sortierphase VACUUM übersprungen, wenn mindestens 75 Prozent der Tabellenzeilen bereits sortiert sind. VACUUMSLegt für die Löschphase das Ziel fest, Speicherplatz zurückzugewinnen, sodass mindestens 75 Prozent der Tabellenzeilen nicht für das Löschen nach dem Löschen markiert sind. Der Schwellenwert muss eine Ganzzahl zwischen 0 und 100 sein. Der Standardwert ist 95. Wenn Sie den Wert 100 angeben, wird die Tabelle VACUUM immer sortiert, sofern sie nicht bereits vollständig sortiert ist. Außerdem wird Speicherplatz aus allen zum Löschen markierten Zeilen zurückgewonnen. Wenn Sie den Wert 0 angeben, wird die Tabelle VACUUM nie sortiert und es wird auch kein Platz zurückgewonnen.
Wenn Sie den PERCENTTO-Schwellenwertparameter angeben, müssen Sie auch einen Tabellennamen angeben. VACUUMSchlägt fehl, wenn ein Tabellenname weggelassen wird.
Sie können den PERCENTTO-Schwellenwertparameter nicht mit verwendenREINDEX.
- BOOST
-
Führt den VACUUM Befehl mit zusätzlichen Ressourcen wie Arbeitsspeicher und Festplattenspeicher aus, sobald diese verfügbar sind. Mit dieser BOOST Option wird der VACUUM Vorgang in einem Fenster ausgeführt und das gleichzeitige Löschen und Aktualisieren für die Dauer des VACUUM Vorgangs blockiert. Bei Ausführung mit dieser BOOST Option werden Systemressourcen beansprucht, was sich auf die Abfrageleistung auswirken kann. Führen Sie den aus VACUUMBOOST, wenn die Systemlast gering ist, z. B. bei Wartungsarbeiten.
Beachten Sie bei der Verwendung der BOOST Option Folgendes:
-
Wenn angegeben, BOOST ist der Wert table_name erforderlich.
-
BOOSTwird nicht unterstützt mit. REINDEX
-
BOOSTwird mit ignoriert DELETEONLY.
-
Nutzungshinweise
Für die Mehrzahl der Amazon-Redshift-Anwendungen wird eine vollständige Bereinigung empfohlen. Weitere Informationen finden Sie unter Bereinigen von Tabellen.
Beachten Sie das folgende Verhalten, bevor Sie eine Bereinigungsoperation ausführen:
-
Sie können nicht VACUUM innerhalb eines Transaktionsblocks laufen (BEGIN... END). Weitere Informationen zu Transaktionen finden Sie unter Serialisierbare Isolierung.
-
Sie können jeweils nur einen VACUUM Befehl auf einem Cluster ausführen. Wenn Sie versuchen, mehrere Bereinigungsoperationen gleichzeitig auszuführen, gibt Amazon Redshift einen Fehler zurück.
-
Es kann vorkommen, dass die Größe von Tabellen zunimmt, wenn sie bereinigt werden. Dieses Verhalten ist erwartet, wenn es keine gelöschten Zeilen gibt, für die Festplattenplatz zurückgewonnen werden könnte, oder wenn die neue Sortierreihenfolge der Tabelle zu einem niedrigeren Datenkompressionsverhältnis führt.
-
Während Bereinigungsoperationen ist eine gewisse Abnahme der Abfrageleistung ein erwartetes Verhalten. Die normale Leistung wird wiederhergestellt, sobald die Bereinigungsoperation abgeschlossen ist.
-
Gleichzeitig ausgeführte Schreiboperationen werden während Bereinigungsoperationen fortgesetzt. Es wird jedoch davon abgeraten, während Bereinigungsoperationen Schreiboperationen auszuführen. Es ist effizienter, Schreiboperationen abzuschließen, bevor die Bereinigung ausgeführt wird. Außerdem können Daten, die nach dem Starten einer Bereinigungsoperation geschrieben werden, von dieser Operation nicht bereinigt werden. In diesem Fall ist eine zweite Bereinigungsoperation erforderlich.
-
Eine Bereinigungsoperation kann möglicherweise nicht gestartet werden, wenn bereits eine Lade- oder Einfügeoperation ausgeführt werden. Bereinigungsoperationen erfordern vorübergehend exklusiven Zugriff auf Tabellen, um gestartet werden zu können. Dieser exklusive Zugriff ist nur kurz erforderlich. Bereinigungsoperationen blockieren daher keine gleichzeitig ausgeführten Lade- und Einfügeoperationen über einen wesentlichen Zeitraum.
-
Bereinigungsoperationen werden übersprungen, wenn es für eine bestimmte Tabelle keinen Handlungsbedarf gibt. Mit der Feststellung, dass die Operation übersprungen werden kann, ist jedoch ein gewisser Overhead verbunden. Wenn Ihnen bekannt ist, dass eine Tabelle optimiert ist oder den Schwellenwert für die Bereinigung nicht erfüllt, führen Sie keine Bereinigungsoperation für sie aus.
-
Ein DELETE ONLY Vakuumvorgang für eine kleine Tabelle reduziert möglicherweise nicht die Anzahl der Blöcke, die zum Speichern der Daten verwendet werden, insbesondere wenn die Tabelle eine große Anzahl von Spalten hat oder der Cluster eine große Anzahl von Bereichen pro Knoten verwendet. Diese Bereinigungsoperationen fügen einen Block pro Spalte und Slice hinzu, um gleichzeitig ausgeführte Einfügungen in die Tabelle zu berücksichtigen. Es ist möglich, dass dieser Overhead die Reduzierung der Blockzahl aufgrund der Rückgewinnung von Festplattenplatz aufwiegt. Wenn beispielsweise eine Tabelle mit 10 Spalten in einem Cluster mit 8 Knoten vor einer Bereinigung 1000 Blöcke besetzt, reduziert die Bereinigung die tatsächliche Blockzahl nicht, es sei denn, aufgrund der Löschung von Zeilen werden mehr als 80 Blöcke Festplattenplatz zurückgewonnen. (Jeder Datenblock nimmt 1 MB in Anspruch.)
Automatische Bereinigungsvorgänge werden angehalten, wenn eine der folgenden Bedingungen erfüllt ist:
-
Ein Benutzer führt eine Operation mit einer Datendefinitionssprache (DDL) aus ALTERTABLE, die z. B. eine exklusive Sperre für eine Tabelle erfordert, an der gerade die automatische Bereinigung ausgeführt wird.
-
Ein Benutzer löst einen Trigger VACUUM für eine beliebige Tabelle im Cluster aus (es VACUUM kann jeweils nur eine Tabelle ausgeführt werden).
-
Ein Zeitraum hoher Cluster-Auslastung.
Beispiele
Stellen Sie Platz und Datenbankplatz wieder her und sortieren Sie die Zeilen in allen Tabellen neu (basierend auf dem standardmäßigen Vacuum-Schwellenwert von 95 %).
vacuum;
Geben Sie Speicherplatz zurück und sortieren Sie die Zeilen in der SALES Tabelle neu, basierend auf dem Standardschwellenwert von 95 Prozent.
vacuum sales;
Geben Sie immer Platz zurück und sortieren Sie die Zeilen in der Tabelle neu. SALES
vacuum sales to 100 percent;
Sortieren Sie Zeilen in der SALES Tabelle nur neu, wenn weniger als 75 Prozent der Zeilen bereits sortiert sind.
vacuum sort only sales to 75 percent;
Geben Sie Platz in der SALES Tabelle zurück, sodass mindestens 75 Prozent der verbleibenden Zeilen nicht zum Löschen nach dem Löschen markiert sind.
vacuum delete only sales to 75 percent;
Indizieren Sie die Tabelle erneut und saugen Sie sie anschließend abLISTING.
vacuum reindex listing;
Der folgende Befehl gibt einen Fehler zurück.
vacuum reindex listing to 75 percent;
Den Tisch neu zusammenbauen und anschließend absaugen. LISTING
vacuum recluster listing;
Mit der Option können Sie den LISTING Tisch neu gruppieren und anschließend absaugen. BOOST
vacuum recluster listing boost;