Perché Amazon Redshift esegue il processo COPY ANALYZE quando STATUPDATE è disattivato?
Ho provato a usare il comando COPY per caricare i dati in una nuova tabella di Amazon Redshift. Ho anche aggiunto il parametro COMPUPDATE OFF. Perché COPY ANALYZE è ancora in esecuzione?
Breve descrizione
Prima di creare una tabella in Amazon Redshift, seleziona il suo stile di distribuzione. Se una tabella non specifica uno stile di distribuzione, per impostazione predefinita questo è la distribuzione AUTOMATICA. La funzionalità di distribuzione AUTOMATICA di Amazon Redshift utilizza quindi il processo COPY ANALYZE per determinare se la tabella deve utilizzare la distribuzione EVEN oppure ALL.
Nota: Il parametro COMPUPDATE OFF esegue ancora COPY ANALYZE sulle tabelle utilizzando uno stile di distribuzione AUTOMATICA. Il parametro STATUPDATE OFF non disabilita o reprime il comando COPY ANALYZE.
Soluzione
SHOW TABLE [schema_name.]table_name
Nota: Per impostazione predefinita, Amazon Redshift applica la distribuzione AUTO se non è specificato uno stile di distribuzione nell'istruzione CREATE TABLE.
- Se la distribuzione AUTOMATICA è attivata, crea una tabella con uno stile di distribuzione definito. La specificazione di uno stile di distribuzione impedisce l'esecuzione di COPY ANALYZE.
L'esempio seguente specifica uno stile di distribuzione EVEN:
create table rs_example_test (id int)diststyle even;
Per ulteriori informazioni sugli stili di distribuzione, consulta Utilizzo degli stili di distribuzione dei dati.
- Utilizza il comando COPY per caricare i dati nella tabella, quindi aggiungili con i parametri STATUPDATE OFF.
Nota: È consigliabile utilizzare il comando COPY per caricare grandi quantità di dati, anziché utilizzare singole istruzioni INSERT. Questo riduce al minimo il rischio di problemi di prestazioni.
- Esegui una query sulla tabella di sistema SVL_STATEMENTTEXT, quindi filtra in base all'ID del processo (PID) relativo alla tua sessione:
select userid, xid, pid, trim(label) as label, starttime, endtime, sequence, trim(type) as type, left(text,60) text from svl_statementtext where pid = 26815 order by xid, starttime, sequence;
La sintassi precedente controlla se COPY ANALYZE è stato eseguito come parte della transazione COPY.
L'output potrebbe essere simile al seguente:
userid xid pid label starttime endtime sequence type text 100 78915 26815 default 2019-03-19 14:06:19 2019-03-19 14:06:21 0 QUERY copy rs_test3 from 's3://xxxxx-rs-log/AWSLogs/rs_test2.csv'\ 100 78915 26815 default 2019-03-19 14:06:21 2019-03-19 14:06:21 0 UTILITY COMMIT
Ciò conferma che COPY ANALYZE non viene più eseguito come parte della transazione COPY.
Informazioni correlate
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata un anno fa