REFRESH MATERIALIZED VIEW - 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à.

REFRESH MATERIALIZED VIEW

Aggiorna una vista materializzata

Quando crei una vista materializzata, il suo contenuto riflette lo stato della tabella o delle tabelle del database sottostante in quel momento. I dati nella vista materializzata rimangono invariati, anche quando le applicazioni apportano modifiche ai dati nelle tabelle sottostanti.

Per aggiornare i dati in una vista materializzata, è possibile usare l'istruzione REFRESH MATERIALIZED VIEW in qualsiasi momento. Eseguendo questa istruzione, Amazon Redshift identifica le modifiche apportate nella tabella o nelle tabelle di base e quindi applica tali modifiche alla vista materializzata.

Per ulteriori informazioni sulle viste materializzate, consultare Viste materializzate in Amazon Redshift.

Sintassi

REFRESH MATERIALIZED VIEW mv_name

Parametri

mv_name

Il nome della vista materializzata da aggiornare.

Note per l'utilizzo

Solo il proprietario di una vista materializzata può eseguire un'operazione REFRESH MATERIALIZED VIEW su tale vista materializzata. Inoltre, il proprietario deve disporre del privilegio SELECT sulle tabelle di base sottostanti per eseguire correttamente il comando REFRESH MATERIALIZED VIEW.

Il comando REFRESH MATERIALIZED VIEW viene eseguito come transazione propria. La semantica delle transazioni Amazon Redshift viene seguita per determinare quali dati dalle tabelle di base sono visibili al comando REFRESH o quando le modifiche apportate dal comando REFRESH sono rese visibili ad altre transazioni in esecuzione in Amazon Redshift.

  • Nel caso di viste materializzate incrementali, REFRESH MATERIALIZED VIEW utilizza solo le righe delle tabelle di base per le quali è già stato eseguito il commit. Pertanto, se l'operazione di aggiornamento viene eseguita dopo un'istruzione DML (Data Manipolation Language) nella stessa transazione, le modifiche di tale istruzione DML non sono visibili per l'aggiornamento.

  • Per un aggiornamento completo di una vista materializzata, REFRESH MATERIALIZED VIEW vede tutte le righe della tabella di base visibili alla transazione di aggiornamento, in base alla semantica delle transazioni Amazon Redshift usuale.

  • A seconda del tipo di argomento di input, Amazon Redshift supporta ancora l'aggiornamento incrementale per le viste materializzate per le seguenti funzioni con tipi di argomenti di input specifici: DATE (timestamp), DATE_PART (data, ora, intervallo, time-tz), DATE_TRUNC (timestamp, intervallo).

  • L'aggiornamento incrementale è supportato in una vista materializzata in cui la tabella di base si trova in un'unità di condivisione dati.

Alcune operazioni in Amazon Redshift interagiscono con le viste materializzate. Alcune di queste operazioni potrebbero forzare un'operazione REFRESH MATERIALIZED VIEW per ricalcolare completamente la vista materializzata, anche se la query che definisce la vista materializzata utilizza solo le funzionalità SQL idonee per l'aggiornamento incrementale. Ad esempio:

  • Le operazioni vacuum in background potrebbero essere bloccate se le viste materializzate non vengono aggiornate. Dopo un periodo di soglia definito internamente, è possibile eseguire l'operazione di vacuum. Con l'operazione vacuum, tutte le viste materializzate dipendenti vengono contrassegnate come da rielaborare al successivo aggiornamento (anche se sono di tipo incrementale). Per informazioni su VACUUM, vedere VACUUM. Per ulteriori informazioni sugli eventi e le modifiche allo stato, consultare STL_MV_STATE.

  • Alcune operazioni avviate dall'utente sulle tabelle di base impongono che una vista materializzata venga rielaborata completamente alla successiva esecuzione dell'operazione REFRESH. Esempi di tali operazioni sono un VACUUM richiamato manualmente, un ridimensionamento classico, un'operazione ALTER DISTKEY, un'operazione ALTER SORTKEY e un'operazione di troncatura. Le operazioni automatiche in alcuni casi possono anche comportare il ricalcolo completo di una vista materializzata alla successiva esecuzione di un'operazione REFRESH. Ad esempio, un'operazione di eliminazione automatica del vuoto può causare un ricalcolo completo. Per ulteriori informazioni sugli eventi e le modifiche allo stato, consultare STL_MV_STATE.

Aggiornamento incrementale per le viste materializzate in un datashare

Amazon Redshift supporta l'aggiornamento automatico e incrementale per le viste materializzate in un datashare consumer quando le tabelle di base vengono condivise. L'aggiornamento incrementale è un'operazione in cui Amazon Redshift identifica le modifiche nella tabella o nelle tabelle di base avvenute dopo l'aggiornamento precedente e aggiorna solo i record corrispondenti nella vista materializzata. Per ulteriori informazioni su questo comportamento, consulta CREATE MATERIALIZED VIEW.

Limitazioni per l'aggiornamento incrementale

Amazon Redshift attualmente non supporta l'aggiornamento incrementale per le viste materializzate definite con una query utilizzando uno dei seguenti elementi SQL:

  • OUTER JOIN (RIGHT, LEFT o FULL).

  • Operazioni insiemistiche: UNION, INTERSECT, EXCEPT, MINUS

  • UNION ALL quando si verifica in una query secondaria e una funzione di aggregazione o una clausola GROUP BY è presente nella query.

  • Le funzioni di aggregazione MEDIAN, PERCENTILE_CONT, MAX, MIN, LISTAGG, STDDEV_SAMP, STDDEV_POP, APPROXIMATE COUNT, APPROXIMATE PERCENTILE e le funzioni di aggregazione bitwise.

    Nota

    Sono supportate le funzioni di aggregazione COUNT, SUM, MIN, MAX e AVG.

  • Funzioni di aggregazione di tipo DISTINCT, come DISTINCT COUNT, DISTINCT SUM, ecc.

  • Funzioni finestra

  • Query che utilizza tabelle temporanee per l'ottimizzazione delle query, ad esempio l'ottimizzazione delle espressioni secondarie comuni.

  • Sottoquery

  • Tabelle esterne che fanno riferimento ai seguenti formati nella query che definisce la vista materializzata.

    • Delta Lake

    • Hudi

    L'aggiornamento incrementale è supportato per le viste materializzate definite utilizzando formati diversi da quelli sopra elencati. Per ulteriori informazioni, consulta Visualizzazioni materializzate su tabelle di data lake esterne in Amazon Redshift Spectrum.

  • Funzioni mutabili, come le funzioni data-ora, funzioni RANDOM e funzioni definite dall'utente non stabili.

  • Per le limitazioni relative all'aggiornamento incrementale per le integrazioni zero-ETL, consulta Considerazioni sull'utilizzo di integrazioni zero-ETL con Amazon Redshift.

Per ulteriori informazioni sulle limitazioni della vista materializzata, incluso l'effetto di operazioni in background come VACUUM sulle operazioni di aggiornamento della vista materializzata, consulta Note per l'utilizzo.

Esempi

Nell'esempio seguente viene eseguito l'aggiornamento della vista materializzata tickets_mv.

REFRESH MATERIALIZED VIEW tickets_mv;