Caricamento di tabelle con compressione automatica - 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à.

Caricamento di tabelle con compressione automatica

È possibile applicare manualmente le codifiche di compressione alle colonne delle tabelle, in base alla propria valutazione dei dati. In alternativa, è possibile utilizzare il comando COPY con COMPUPDATE impostato su ON per analizzare e applicare automaticamente la compressione in base ai dati di esempio.

È possibile utilizzare la compressione automatica quando crei e carichi una nuova tabella. Il comando COPY esegue un'analisi di compressione. È anche possibile eseguire un'analisi di compressione senza caricare dati o modificare la compressione in una tabella eseguendo il comando ANALYZE COMPRESSION in una tabella già popolata. Ad esempio, è possibile eseguire ANALYZE COMPRESSION quando si desidera analizzare la compressione su una tabella per un utilizzo futuro, mantenendo al contempo le istruzioni DDL (Data Definition Language) esistenti.

La compressione automatica equilibra le prestazioni globali quando si scelgono le codifiche di compressione. Le prestazioni delle scansioni a intervallo limitato potrebbero risultare scadenti se le colonne di chiave di ordinamento vengono compresse più delle altre colonne nella stessa query. Di conseguenza, la compressione automatica salta la fase di analisi dei dati sulle colonne chiave di ordinamento e mantiene i tipi di codifica definiti dall'utente.

La compressione automatica sceglie la codifica RAW se non è stato definito esplicitamente un tipo di codifica. ANALYZE COMPRESSION si comporta allo stesso modo. Per ottenere prestazioni ottimali delle query, prendere in considerazione l'utilizzo di RAW per le chiavi di ordinamento.

Come funziona la compressione automatica

Quando il parametro COMPUPDATE è impostato su ON, il comando COPY applica la compressione automatica ogni volta che esegui il comando COPY con una tabella di destinazione vuota e tutte le colonne della tabella hanno codifica RAW o nessuna codifica.

Per applicare la compressione automatica a una tabella vuota, indipendentemente dalle codifiche di compressione attuali, esegui il comando COPY con l'opzione COMPUPDATE impostata su ON. Per disattivare la compressione automatica, esegui il comando COPY con l'opzione COMPUPDATE impostata su OFF.

Non è possibile applicare la compressione automatica a una tabella che contiene già dati.

Nota

L'analisi della compressione automatica richiede un numero sufficiente di righe nei dati di carico (almeno 100.000 righe per sezione) per generare un campione significativo.

La compressione automatica esegue queste operazioni in background come parte della transazione di caricamento:

  1. Un campione iniziale di righe viene caricato dal file di input. La dimensione del campione si basa sul valore del parametro COMPROWS. Il valore predefinito è 100,000.

  2. Le opzioni di compressione vengono scelte per ogni colonna.

  3. Le righe di esempio vengono rimosse dalla tabella.

  4. La tabella viene ricreata con le codifiche di compressione scelte.

  5. L'intero file di input viene caricato e compresso utilizzando le nuove codifiche.

Dopo aver eseguito il comando COPY, la tabella viene completamente caricata, compressa ed è pronta per l'uso. Se carichi più dati in un secondo momento, le righe aggiunte vengono compresse in base alla codifica esistente.

Se desideri eseguire solo un'analisi di compressione, esegui ANALYZE COMPRESSION, che è più efficiente rispetto all'esecuzione di un COPY completo. Quindi è possibile valutare i risultati per decidere se utilizzare la compressione automatica o ricreare manualmente la tabella.

La compressione automatica è supportata solo per il comando COPY. In alternativa, è possibile applicare manualmente la codifica della compressione quando crei la tabella. Per informazioni sulla codifica della compressione manuale, consultare Utilizzo della compressione delle colonne.

Esempio di compressione automatica

In questo esempio, presumi che il database TICKIT contenga una copia della tabella LISTING denominata BIGLIST e desideri applicare la compressione automatica a questa tabella quando viene caricata con circa 3 milioni di righe.

Per caricare e comprimere automaticamente la tabella
  1. Assicurati che la tabella sia vuota. È possibile applicare la compressione automatica solo a una tabella vuota:

    truncate biglist;
  2. Caricare la tabella con un singolo comando COPY. Sebbene la tabella sia vuota, potrebbe essere stata specificata una codifica precedente. Per consentire che Amazon Redshift esegua un'analisi di compressione, imposta il parametro COMPUPDATE su ON.

    copy biglist from 's3://mybucket/biglist.txt' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' delimiter '|' COMPUPDATE ON;

    Poiché non viene specificata alcuna opzione COMPROWS, viene utilizzata la dimensione di esempio predefinita e consigliata di 100.000 righe per sezione.

  3. Guarda il nuovo schema per la tabella BIGLIST per rivedere gli schemi di codifica scelti automaticamente.

    select "column", type, encoding from pg_table_def where tablename = 'biglist'; Column | Type | Encoding ----------------+-----------------------------+---------- listid | integer | az64 sellerid | integer | az64 eventid | integer | az64 dateid | smallint | none numtickets | smallint | az64 priceperticket | numeric(8,2) | az64 totalprice | numeric(8,2) | az64 listtime | timestamp without time zone | az64
  4. Verifica che il numero previsto di righe sia stato caricato:

    select count(*) from biglist; count --------- 3079952 (1 row)

Quando le righe vengono aggiunte successivamente a questa tabella utilizzando le istruzioni COPY o INSERT, vengono applicate le stesse codifiche di compressione.