VACUUM - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

VACUUM

Riordina le righe e recupera spazio di memorizzazione di una tabella specificata o di tutte le tabelle del database corrente.

Nota

Solo gli utenti con le autorizzazioni necessarie possono efficacemente eseguire l'operazione vacuum su una tabella. Se VACUUM viene eseguita senza i permessi necessari per la tabella, l'operazione viene completata correttamente ma non ha alcun effetto. Per un elenco dei permessi di tabella validi per un'esecuzione efficaceVACUUM, vedere la seguente sezione Privilegi richiesti.

Amazon Redshift ordina automaticamente i dati e viene eseguito VACUUM DELETE in background. Ciò riduce la necessità di eseguire il comando. VACUUM Per ulteriori informazioni, consulta Vacuum delle tabelle.

Per impostazione predefinita, VACUUM salta la fase di ordinamento per qualsiasi tabella in cui più del 95 percento delle righe della tabella sono già ordinate. Saltare la fase di ordinamento può migliorare significativamente le prestazioni. VACUUM Per modificare la soglia di ordinamento o eliminazione predefinita per una singola tabella, includi il nome della tabella e il PERCENT parametro TO threshold durante l'esecuzioneVACUUM.

Gli utenti possono accedere alle tabelle mentre ne viene eseguito il vacuum. È possibile eseguire query e operazioni di scrittura mentre una tabella viene vuotata, ma quando i comandi Data Manipulation Language (DML) e un vacuum vengono eseguiti contemporaneamente, entrambi potrebbero richiedere più tempo. Se si eseguono UPDATE DELETE istruzioni in modalità vacuum, è possibile che le prestazioni del sistema vengano ridotte. VACUUMDELETEblocca temporaneamente le operazioni di aggiornamento ed eliminazione.

Amazon Redshift esegue automaticamente un DELETE ONLY vuoto in background. Il funzionamento automatico dell'aspirapolvere si interrompe quando gli utenti eseguono operazioni in linguaggio di definizione dei dati (DDL), ad esempio. ALTER TABLE

Nota

La sintassi e il comportamento del VACUUM comando Amazon Redshift sono sostanzialmente diversi dall'operazione Postgre. SQL VACUUM Ad esempio, l'VACUUMoperazione predefinita in Amazon Redshift è VACUUM FULL che recupera spazio su disco e riordina tutte le righe. Al contrario, l'VACUUMoperazione predefinita in Postgre recupera SQL semplicemente spazio e lo rende disponibile per il riutilizzo.

Per ulteriori informazioni, consulta Vacuum delle tabelle.

Privilegi richiesti

Di seguito sono riportati i privilegi richiesti per: VACUUM

  • Superuser

  • Utenti con il privilegio VACUUM

  • Proprietario della tabella

  • Proprietario del database con cui è condivisa la tabella

Sintassi

VACUUM [ FULL | SORT ONLY | DELETE ONLY | REINDEX | RECLUSTER ] [ [ table_name ] [ TO threshold PERCENT ] [ BOOST ] ]

Parametri

FULL

Ordina la tabella specificata (o tutte le tabelle del database corrente) e recupera lo spazio su disco occupato dalle righe contrassegnate per l'eliminazione dalle precedenti UPDATE operazioni and. DELETE VACUUMFULLè l'impostazione predefinita.

Un'operazione vacuum full non esegue una reindicizzazione delle tabelle interlacciate. Per reindicizzare le tabelle interlacciate seguite da un vacuum full, utilizza l'opzione VACUUM REINDEX.

Per impostazione predefinita, VACUUM FULL salta la fase di ordinamento per tutte le tabelle che sono già ordinate almeno al 95 percento. Se VACUUM riesce a saltare la fase di ordinamento, esegue una DELETE ONLY e recupera spazio nella fase di eliminazione in modo che almeno il 95 percento delle righe rimanenti non sia contrassegnato per l'eliminazione.  

Se la soglia di ordinamento non viene soddisfatta (ad esempio, se viene ordinato il 90% delle righe) ed VACUUM esegue un ordinamento completo, esegue anche un'operazione di eliminazione completa, recuperando spazio dal 100 percento delle righe eliminate.

Puoi modificare la soglia di vacuum predefinita solo per una singola tabella. Per modificare la soglia di vuoto predefinita per una singola tabella, includete il nome della tabella e il parametro di soglia PERCENT TO.

SORT ONLY

Ordina la tabella specificata (o tutte le tabelle nel database corrente) senza recuperare spazio liberato dalle righe eliminate. Questa opzione è utile quando il recupero di spazio su disco non è importante, ma è importante riordinare le nuove righe. Un SORT ONLY vuoto riduce il tempo impiegato per le operazioni di aspirazione quando l'area non ordinata non contiene un gran numero di righe eliminate e non copre l'intera regione ordinata. Le applicazioni che non hanno vincoli di spazio su disco ma dipendono dalle ottimizzazioni delle query associate al mantenimento ordinato delle righe della tabella possono trarre vantaggio da questo tipo di vacuum.

Per impostazione predefinita, VACUUM SORT ONLY salta qualsiasi tabella che sia già ordinata almeno al 95 percento. Per modificare la soglia di ordinamento predefinita per una singola tabella, includi il nome della tabella e il PERCENT parametro di soglia TO durante l'esecuzione. VACUUM

DELETE ONLY

Amazon Redshift esegue automaticamente un DELETE ONLY aspirapolvere in background, quindi raramente, se non mai, è necessario utilizzare un DELETE ONLY aspirapolvere.

A VACUUM DELETE recupera lo spazio su disco occupato dalle righe contrassegnate per l'eliminazione da DELETE operazioni precedenti UPDATE e compatta la tabella per liberare lo spazio consumato. Un'operazione a DELETE ONLY vuoto non ordina i dati della tabella.

Questa opzione riduce il tempo necessario per le operazioni di vacuum quando il recupero di spazio su disco è importante, ma non è importante riordinare le nuove righe. Questa opzione può anche essere utile quando le prestazioni della query sono già ottimali e il riordinamento delle righe per ottimizzare le prestazioni della query non è un requisito.

Per impostazione predefinita, VACUUM DELETE ONLY recupera spazio in modo tale che almeno il 95 percento delle righe rimanenti non sia contrassegnato per l'eliminazione. Per modificare la soglia di eliminazione predefinita per una singola tabella, includi il nome della tabella e il PERCENT parametro di soglia TO durante l'esecuzioneVACUUM. 

Alcune operazioni, come ALTER TABLE APPEND, possono causare la frammentazione delle tabelle. Quando usi la clausola DELETE ONLY, l'operazione di vacuum recupera lo spazio dalle tabelle frammentate. Lo stesso valore di soglia del 95 percento si applica all'operazione di deframmentazione.

REINDEXnome della tabella

Analizza la distribuzione dei valori nelle colonne delle chiavi di ordinamento interlacciate, quindi esegue un'operazione completa. VACUUM Se REINDEX viene utilizzato, è necessario un nome di tabella.

VACUUMREINDEXrichiede molto più tempo rispetto al VACUUM FULL fatto che esegue un passaggio aggiuntivo per analizzare le chiavi di ordinamento interlacciate. L'operazione di ordinamento e unione può richiedere più tempo per le tabelle interlacciate perché l'ordinamento interlacciato potrebbe dover riordinare più righe rispetto a un ordinamento composto.

Se un'VACUUMREINDEXoperazione termina prima del completamento, la successiva VACUUM riprende l'operazione di reindicizzazione prima di eseguire l'operazione di vuoto completo.

VACUUMREINDEXnon è supportato con la soglia TO. PERCENT 

table_name

Nome della tabella da sottoporre al vacuum. Se non si specifica un nome tabella, l'operazione di vacuum si applica a tutte le tabelle nel database corrente. Puoi specificare qualsiasi tabella permanente o temporanea creata dall'utente. Il comando non è significativo per altri oggetti, come le viste e le tabelle di sistema.

Se si include il PERCENT parametro di soglia TO, è necessario un nome di tabella.

RECLUSTERnome della tabella

Ordina le parti della tabella che non sono ordinate. Le parti della tabella che sono già ordinate in base all'ordinamento automatico della tabella rimangono intatte. Questo comando non unisce i dati appena ordinati con la regione ordinata. Inoltre, non recupera tutto lo spazio contrassegnato per l'eliminazione. Al termine di questo comando, la tabella potrebbe non apparire completamente ordinata, come indicato dal unsorted campo in _ _. SVV TABLE INFO

Si consiglia di utilizzarlo VACUUM RECLUSTER per tabelle di grandi dimensioni con inserimenti frequenti e query che accedono solo ai dati più recenti.

VACUUMRECLUSTERnon è supportato con la soglia TO. PERCENT Se RECLUSTER viene utilizzato, è richiesto un nome di tabella.

VACUUMRECLUSTERnon è supportato nelle tabelle con chiavi di ordinamento interlacciate e nelle tabelle con stile di ALL distribuzione.

table_name

Nome della tabella da sottoporre al vacuum. Puoi specificare qualsiasi tabella permanente o temporanea creata dall'utente. Il comando non è significativo per altri oggetti, come le viste e le tabelle di sistema.

Soglia TO PERCENT

Una clausola che specifica la soglia oltre la quale VACUUM salta la fase di ordinamento e la soglia di destinazione per recuperare spazio nella fase di eliminazione. La soglia di ordinamento è la percentuale delle righe totali che sono già ordinate per la tabella specificata prima del vacuuming.  La soglia di eliminazione è la percentuale minima delle righe totali non contrassegnate per l'eliminazione dopo il vacuum.

Poiché VACUUM riordina le righe solo quando la percentuale di righe ordinate in una tabella è inferiore alla soglia di ordinamento, Amazon Redshift può spesso ridurre i tempi in modo significativo. VACUUM Allo stesso modo, quando VACUUM non è obbligato a recuperare spazio dal 100% delle righe contrassegnate per l'eliminazione, è spesso in grado di saltare i blocchi di riscrittura che contengono solo poche righe eliminate.

Ad esempio, se si specifica 75 come soglia, VACUUM salta la fase di ordinamento se il 75% o più delle righe della tabella sono già in ordinamento. Per la fase di eliminazione, VACUUMS imposta l'obiettivo di recuperare spazio su disco in modo tale che almeno il 75% delle righe della tabella non siano contrassegnate per l'eliminazione dopo il vuoto. Il valore di threshold deve essere un numero intero compreso tra 0 e 100. Il valore predefinito è 95. Se specifichi un valore pari a 100, ordina VACUUM sempre la tabella a meno che non sia già completamente ordinata e recupera spazio da tutte le righe contrassegnate per l'eliminazione. Se specificate un valore pari a 0, VACUUM non ordina mai la tabella e non recupera mai spazio.

Se si include il PERCENT parametro di soglia TO, è necessario specificare anche un nome di tabella. Se il nome di una tabella viene omesso, VACUUM fallisce.

Non è possibile utilizzare il PERCENT parametro di soglia TO conREINDEX.

BOOST

Esegue il VACUUM comando con risorse aggiuntive, come memoria e spazio su disco, non appena disponibili. Con l'BOOSTopzione, VACUUM opera in un'unica finestra e blocca le eliminazioni e gli aggiornamenti simultanei per tutta la durata dell'VACUUMoperazione. L'esecuzione con l'BOOSTopzione richiede risorse di sistema, il che potrebbe influire sulle prestazioni delle query. Esegui il comando VACUUM BOOST quando il carico sul sistema è leggero, ad esempio durante le operazioni di manutenzione.

Quando si utilizza l'BOOSTopzione, tenete presente quanto segue:

  • Quando BOOST viene specificato, il valore table_name è obbligatorio.

  • BOOSTnon è supportato con. REINDEX

  • BOOSTviene ignorato con DELETEONLY.

Note per l'utilizzo

Per la maggior parte delle applicazioni Amazon Redshift, si consiglia l'utilizzo di vacuum completo. Per ulteriori informazioni, consulta Vacuum delle tabelle.

Prima di eseguire un'operazione di vacuum, tieni presente il seguente comportamento:

  • Non puoi eseguire l'operazione VACUUM all'interno di un blocco di transazioni (BEGIN... END). Per ulteriori informazioni sulle transazioni, consultare Isolamento serializzabile.

  • È possibile eseguire un solo VACUUM comando in un cluster alla volta. Se si prova a eseguire più operazioni di vacuum contemporaneamente, Amazon Redshift restituisce un errore.

  • Le dimensioni della tabella potrebbero crescere quando viene sottoposta al vacuum. Questo comportamento è previsto quando non ci sono righe eliminate da recuperare o il nuovo ordinamento della tabella produce un rapporto inferiore di compressione dei dati.

  • Durante le operazioni di vacuum, è previsto un certo degrado delle prestazioni delle query. Le normali prestazioni riprendono non appena l'operazione di vacuum è completa.

  • Le operazioni di scrittura simultanee procedono durante le operazioni di vacuum, ma non è consigliabile eseguire operazioni di scrittura durante il vacuum. È più efficiente completare le operazioni di scrittura prima di eseguire il vacuum. Inoltre, tutti i dati scritti dopo l'avvio di un'operazione di vacuum non possono essere resi vacuum da tale operazione. In questo caso, è necessaria una seconda operazione di vacuum.

  • Un'operazione di vacuum potrebbe non avviarsi se un'operazione di carico o inserimento è già in corso. Le operazioni di vacuum richiedono temporaneamente l'accesso esclusivo alle tabelle per essere avviate. Questo accesso esclusivo è richiesto per breve tempo, quindi le operazioni di vacuum non bloccano i carichi e gli inserimenti simultanei per un periodo di tempo significativo.

  • Le operazioni di vacuum vengono saltate in assenza di lavoro da eseguire per una determinata tabella. Tuttavia, si verifica un sovraccarico associato alla scoperta della possibilità di saltare l'operazione. Se sai che una tabella è una versione originale o non soddisfa la soglia di vacuum, non sottoporla a un'operazione di vacuum.

  • Un'operazione a DELETE ONLY vuoto su una tabella di piccole dimensioni potrebbe non ridurre il numero di blocchi utilizzati per archiviare i dati, specialmente quando la tabella ha un numero elevato di colonne o il cluster utilizza un numero elevato di sezioni per nodo. Queste operazioni di vacuum aggiungono un blocco per colonna per sezione per tenere conto degli inserimenti simultanei nella tabella e c'è il rischio che questo sovraccarico superi la riduzione del numero di blocchi dallo spazio su disco recuperato. Ad esempio, se una tabella con 10 colonne su un cluster con 8 nodi occupa 1000 blocchi prima di un vacuum, il vacuum non riduce il numero di blocchi effettivo a meno che non vengano recuperati più di 80 blocchi di spazio su disco a causa delle righe eliminate. Ogni blocco di dati utilizza 1 MB.

Operazioni di vacuum automatiche in pausa in presenza di una delle condizioni seguenti:

  • Un utente esegue un'operazione in linguaggio di definizione dei dati (DDL), ad esempio ALTERTABLE, che richiede un blocco esclusivo su una tabella su cui sta attualmente lavorando l'aspirapolvere automatico.

  • Un utente si attiva VACUUM su qualsiasi tabella del cluster (VACUUMpuò essere eseguita solo una alla volta).

  • Un periodo di caricamento del cluster elevato.

Esempi

Recupera lo spazio del database e riordina le righe in tutte le tabelle in base alla soglia predefinita di vacuum del 95 percento.

vacuum;

Recupera spazio e riordina le righe nella SALES tabella in base alla soglia predefinita del 95%.

vacuum sales;

Recupera sempre spazio e riordina le righe nella tabella. SALES

vacuum sales to 100 percent;

Riordina le righe della SALES tabella solo se meno del 75% delle righe sono già ordinate.

vacuum sort only sales to 75 percent;

Recupera spazio nella SALES tabella in modo che almeno il 75% delle righe rimanenti non siano contrassegnate per l'eliminazione dopo il vuoto.

vacuum delete only sales to 75 percent;

Reindicizza e poi aspira la LISTING tabella.

vacuum reindex listing;

Il seguente comando restituisce un errore.

vacuum reindex listing to 75 percent;

Raccogli e poi aspira il tavolo. LISTING

vacuum recluster listing;

Raccogli e poi aspira il LISTING tavolo con l'opzione. BOOST

vacuum recluster listing boost;