Perché la mia vista materializzata non si aggiorna per il mio cluster di Amazon Redshift?
La mia vista materializzata non si aggiorna per il mio cluster di Amazon Redshift.
Breve descrizione
I seguenti scenari impediscono o causano lunghi tempi di completamento per l'aggiornamento di una vista materializzata in Amazon Redshift:
- Gli errori di autorizzazione impediscono le operazioni REFRESH MATERIALIZED VIEW.
- Operazioni VACUUM e TRUNCATE concorrenti su una tabella di base bloccano un aggiornamento e restituiscono il seguente errore: "Invalid operation: Materialized view mv_name could not be refreshed as a base table changed physically due to vacuum/truncate concurrently. Please try again".
- REFRESH MATERIALIZED VIEW non può essere aggiornato.
- Carichi di lavoro attivi bloccano le attività di aggiornamento automatiche.
Risoluzione
Nota: per i cluster di Amazon Redshift serverless, utilizza le viste di monitoraggio SYS anziché le viste di sistema (STL, STV, SVL, SVV) utilizzate nei cluster con provisioning. Per ulteriori informazioni, consulta Mappatura delle viste di sistema per la migrazione alle viste di monitoraggio SYS.
Errori di autorizzazione REFRESH MATERIALIZED VIEW
Per eseguire un'operazione REFRESH MATERIALIZED VIEW su una vista materializzata, devi essere il proprietario. Devi inoltre disporre del privilegio SELECT sulle tabelle di base sottostanti e del privilegio USAGE sullo schema.
Per le operazioni di ricalcolo complete, è necessario disporre del privilegio CREATE sullo schema. Per ulteriori informazioni sulla definizione dei privilegi, consulta GRANT.
Per ulteriori informazioni sull'aggiornamento automatico, consulta Aggiornamento automatico di una vista materializzata.
L'errore seguente si verifica quando REFRESH MATERIALIZED VIEW e VACUUM vengono inviati per essere eseguiti contemporaneamente sulla tabella di base: "Invalid operation: Materialized view mv_name could not be refreshed as a base table changed physically due to vacuum/truncate concurrently. Please try again;".
Al termine dell'operazione, invia nuovamente il comando REFRESH MATERIALIZED VIEW.
L'aggiornamento REFRESH MATERIALIZED VIEW non riesce
Le seguenti operazioni possono causare l'esito negativo dell'aggiornamento di una vista materializzata:
- Rinomini o elimini una colonna.
- Modifichi il tipo di colonna.
- Modifichi il nome di uno schema o di una tabella di base.
Nota: in queste situazioni, puoi eseguire query sulle viste materializzate, ma non puoi aggiornarle. I vincoli si applicano anche nella vista materializzata se la colonna non viene utilizzata.
Esempi di messaggio di errore:
- Detail: Procedure <mv_sp_*****_2_1> does not exist.
- column <column name> does not exist.
- DETAIL: schema "<schema name>" does not exist.
- ERROR: Materialized view <my name> is unrefreshable as a base table was renamed.
Per visualizzare l'attività di aggiornamento della vista materializzata, utilizza SVL_MV_REFRESH_STATUS per un cluster con provisioning di Amazon Redshift o SYS_MV_REFRESH_HISTORY per un cluster di Amazon Redshift serverless.
Per scoprire se i dati nella vista materializzata sono obsoleti e per visualizzare le informazioni sullo stato della vista materializzata, utilizza STV_MV_INFO, SYS_MV_STATE o SYS_MV_REFRESH_HISTORY.
Quando una vista materializzata non può essere aggiornata, eliminala e ricreala per mantenere i dati correnti.
Operazione REFRESH MATERIALIZED VIEW di lunga durata
Il comando REFRESH MATERIALIZED VIEW viene eseguito come una normale query sul cluster.
Per verificare l'esecuzione della query, intraprendi queste azioni:
- Per controllare le query attive sui dati, utilizza STV_INFLIGHT.
- Per monitorare gli stati correnti delle query WLM, utilizza STV_WLM_QUERY_STATE.
- Per esaminare le query attive e i passaggi delle query sui nodi di calcolo, utilizza STV_EXEC_STATE.
Per monitorare le operazioni REFRESH MATERIALIZED VIEW, utilizza le seguenti viste di sistema:
- Per visualizzare eventuali aggiornamenti correnti sulle tabelle del database, utilizza STV_LOCKS.
- Per visualizzare la configurazione della classe di servizio per WLM, utilizza STV_WLM_SERVICE_CLASS_CONFIG.
- Per determinare se la vista materializzata ha ricevuto un aggiornamento incrementale o completo, utilizzate SVL_MV_REFRESH_STATUS.
Se le prestazioni dell'operazione REFRESH MATERIALIZED VIEW sono lente, consulta Miglioramento delle prestazioni delle query.
Stato di aggiornamento nascosto durante il carico di lavoro attivo
Amazon Redshift dà priorità ai carichi di lavoro rispetto all'aggiornamento automatico. Questa priorità può interrompere l'aggiornamento automatico per da mantenere le prestazioni del carico di lavoro rinviando gli aggiornamenti di alcune viste materializzate. Alcune situazioni potrebbero richiedere un comportamento di aggiornamento più prevedibile per le viste materializzate.
Per facilitare un comportamento di aggiornamento prevedibile, intraprendi le seguenti azioni:
- Esegui REFRESH MATERIALIZED VIEW manualmente.
- Pianifica gli aggiornamenti tramite l'API scheduler o la console Amazon Redshift.
- Argomenti
- Analytics
- Lingua
- Italiano
