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 eseguito senza le necessarie autorizzazioni di tabella, l'operazione viene completata ma non ha alcun effetto. Per l'elenco delle autorizzazioni di tabella valide per eseguire efficacemente VACUUM, consulta la seguente sezione Privilegi richiesti.
Amazon Redshift riordina automaticamente i dati ed esegue VACUUM DELETE in background. Ciò riduce la necessità di eseguire il comando VACUUM. Per ulteriori informazioni, consulta Vacuum delle tabelle.
Per impostazione predefinita, il comando VACUUM ignora la fase di ordinamento per ogni tabella dove più del 95% delle righe della tabella sono già ordinate. Ignorare la fase di ordinamento può migliorare significativamente le prestazioni di VACUUM. Per modificare la soglia predefinita di ordinamento o eliminazione per una singola tabella, includi il nome della tabella e il parametro TO threshold PERCENT quando esegui il comando VACUUM.
Gli utenti possono accedere alle tabelle mentre ne viene eseguito il vacuum. È possibile eseguire query e scrivere operazioni mentre viene eseguito il vacuum di una tabella, ma quando i comandi DML (Data Manipulation Language) e il vacuum vengono eseguiti contemporaneamente, potrebbero richiedere più tempo. Se si eseguono le istruzioni UPDATE e DELETE durante un vacuum, le prestazioni del sistema potrebbero essere ridotte. VACUUM DELETE blocca temporaneamente le operazioni di aggiornamento ed eliminazione.
Amazon Redshift esegue automaticamente un vacuum DELETE ONLY in background. L'operazione di vacuum automatica viene sospesa quando gli utenti eseguono operazioni DDL (Data Definition Language), ad esempio ALTER TABLE.
Nota
La sintassi e il comportamento del comando VACUUM in Amazon Redshift sono sostanzialmente diversi dall'operazione VACUUM di PostgreSQL. Ad esempio, l'operazione VACUUM di default in Amazon Redshift è VACUUM FULL, che recupera spazio su disco e riordina tutte le righe. Al contrario, l'operazione VACUUM predefinita in PostgreSQL recupera solo lo spazio e lo rende disponibile per il riutilizzo.
Per ulteriori informazioni, consulta Vacuum delle tabelle.
Privilegi richiesti
Di seguito sono elencati i privilegi necessari 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 nel database corrente) e recupera lo spazio su disco occupato dalle righe che sono state contrassegnate per l'eliminazione dalle precedenti operazioni UPDATE e DELETE. VACUUM FULL è il valore predefinito.
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, il comando VACUUM FULL ignora la fase di ordinamento per ogni tabella con almeno il 95% delle righe ordinate. Se VACUUM è in grado di ignorare la fase di ordinamento, esegue il comando DELETE ONLY e recupera lo spazio nella fase di eliminazione in modo tale che almeno il 95 percento delle restanti righe non sia contrassegnato per l'eliminazione.
Se la soglia di ordinamento non viene soddisfatta (ad esempio, se il 90 percento delle righe viene ordinato) e VACUUM esegue un ordinamento completo, viene eseguita anche un'operazione di eliminazione completa, recuperando spazio dal 100% delle righe eliminate.
Puoi modificare la soglia di vacuum predefinita solo per una singola tabella. Per modificare la soglia predefinita di vacuum per una singola tabella, includi il nome della tabella e il parametro TO threshold PERCENT.
- 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 vacuum SORT ONLY riduce il tempo trascorso per le operazioni di vacuum quando la regione non ordinata non contiene un numero elevato 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, il comando VACUUM SORT ONLY ignora ogni tabella con almeno il 95% delle righe ordinate. Per modificare la soglia predefinita di ordinamento per una singola tabella, includi il nome della tabella e il parametro TO threshold PERCENT quando esegui il comando VACUUM.
- DELETE ONLY
-
Amazon Redshift esegue automaticamente un vacuum DELETE ONLY in background, per cui non sarà quasi mai necessario eseguire un vacuum DELETE ONLY.
Un VACUUM DELETE recupera lo spazio su disco occupato dalle righe che sono state contrassegnate per l'eliminazione dalle precedenti operazioni UPDATE e DELETE e compatta la tabella per liberare lo spazio utilizzato. Un'operazione di vacuum DELETE ONLY 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 consente di recuperare spazio in modo tale che almeno il 95% delle restanti righe non viene contrassegnato per l'eliminazione. Per modificare la soglia predefinita di eliminazione per una singola tabella, includi il nome della tabella e il parametro TO threshold PERCENT quando esegui il comando VACUUM.
Alcune operazioni, come
ALTER TABLE APPEND
, possono causare la frammentazione delle tabelle. Quando usi la clausolaDELETE 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. - REINDEX
-
Analizza la distribuzione dei valori nelle colonne interlacciate della chiave di ordinamento, quindi esegue un'operazione di VACUUM completa. Se si utilizza REINDEX, è necessario un nome di tabella.
VACUUM REINDEX può impiegare molto più tempo rispetto a VACUUM FULL perché esegue un ulteriore passaggio per analizzare le chiavi di ordinamento interlacciato. 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'operazione di VACUUM REINDEX termina prima del completamento, il successivo VACUUM riprende l'operazione di reindicizzazione prima di eseguire l'operazione vacuum full.
VACUUM REINDEX non è supportato con TO threshold PERCENT.
- RECLUSTARE
-
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 campo
unsorted
in SVV_TABLE_INFO.Si consiglia di utilizzare VACUUM RECLUSTER per tabelle di grandi dimensioni con importazione frequente e query che accedono solo ai dati più recenti.
VACUUM RECLUSTER non è supportato con TO threshold PERCENT. Se si utilizza RECLUSTER, è necessario un nome di tabella.
VACUY RECLUSTER non è supportato su tabelle con chiavi di ordinamento interlacciato e tabelle con stile di distribuzione ALL.
- 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 includi il parametro TO threshold PERCENT, è richiesto un nome tabella.
- TO threshold PERCENT
-
Clausola che specifica la soglia oltre la quale VACUUM ignora la fase di ordinamento e la soglia di destinazione per recuperare lo 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.
Dal momento che VACUUM riordina le righe solo quando la percentuale delle righe ordinate in una tabella è inferiore alla soglia di ordinamento, Amazon Redshift può spesso ridurre significativamente i tempi di esecuzione di VACUUM. Analogamente, quando VACUUM non è vincolato a recuperare spazio dal 100% delle righe contrassegnate per l'eliminazione, è spesso in grado di ignorare i blocchi di riscrittura che contengono solo alcune righe eliminate.
Ad esempio, se specifichi 75 per threshold, VACUUM ignora la fase di ordinamento se almeno il 75% delle righe della tabella sono già ordinate. Per la fase di eliminazione, VACUUMS imposta una destinazione per il recupero dello spazio su disco in modo tale che almeno il 75% delle righe della tabella non sia contrassegnato per l'eliminazione dopo il vacuum. Il valore di threshold deve essere un numero intero compreso tra 0 e 100. Il valore predefinito è 95. Se specifichi il valore 100, VACUUM ordina sempre la tabella a meno che non sia già completamente ordinata e recupera lo spazio da tutte le righe contrassegnate per l'eliminazione. Se specifichi il valore 0, VACUUM non ordina mai la tabella e non recupera lo spazio.
Se includi il parametro TO threshold PERCENT, devi specificare anche un nome tabella. Se non specifichi un nome di tabella, VACUUM non riesce.
Non è possibile utilizzare il parametro TO threshold PERCENT con REINDEX.
- BOOST
-
Esegue il comando VACUUM con risorse aggiuntive, come memoria e spazio su disco, che sono disponibili. Con l'opzione BOOST, VACUUM funziona in una finestra e blocca le eliminazioni e gli aggiornamenti simultanei per la durata dell'operazione VACUUM. L'esecuzione con l'opzione BOOST richiede risorse di sistema, che potrebbero influire sulle prestazioni della query. Eseguire VACUUM BOOST quando il carico sul sistema è leggero, ad esempio durante le operazioni di manutenzione.
Durante l'utilizzo dell'opzione BOOST tenere presente quanto segue:
-
Specificando l'opzione BOOST, è obbligatorio specificare il valore table-name.
-
L'opzione BOOST non è supportata nell'operazione REINDEX.
-
L'opzione BOOST è ignorata nell'operazione DELETE ONLY.
-
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 è possibile eseguire VACUUM all'interno di un blocco di transazioni (BEGIN ... END). Per ulteriori informazioni sulle transazioni, consultare Isolamento serializzabile.
-
Puoi eseguire un solo comando VACUUM su un cluster in qualsiasi momento. 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 di vacuum DELETE ONLY su una piccola tabella potrebbe non ridurre il numero di blocchi utilizzati per memorizzare 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 DDL (Data Definition Language), ad esempio ALTER TABLE, che richiede un blocco esclusivo sulla tabella su cui è attualmente in funzione il vacuum automatico.
-
Un utente attiva il VACUUM su una qualsiasi tabella nel cluster (è possibile eseguire un solo VACUUM 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 lo spazio e riordina le righe nella tabella SALES in base alla soglia predefinita del 95 percento.
vacuum sales;
Recupera sempre lo spazio e riordina le righe nella tabella SALES.
vacuum sales to 100 percent;
Riordina le righe della tabella SALES solo se risultano già ordinate meno del 75% delle righe.
vacuum sort only sales to 75 percent;
Recupera spazio nella tabella SALES in modo tale che almeno il 75 delle restanti righe non sia contrassegnato per l'eliminazione dopo il vacuum.
vacuum delete only sales to 75 percent;
Reindicizza e quindi sottoponi al vacuum la tabella LISTING.
vacuum reindex listing;
Il seguente comando restituisce un errore.
vacuum reindex listing to 75 percent;
Esegui il recluster e quindi sottoponi a vacuum la tabella LISTING.
vacuum recluster listing;
Esegui il recluster e quindi sottoponi a vacuum la tabella LISTING con l'opzione BOOST.
vacuum recluster listing boost;