¿Por qué mi vista materializada no se actualiza para mi clúster de Amazon Redshift?

5 minutos de lectura
0

Mi vista materializada no se actualiza para mi clúster de Amazon Redshift. ¿Por qué sucede esto y cómo puedo actualizar mi vista materializada?

Descripción corta

Los siguientes escenarios pueden provocar que una vista materializada en Amazon Redshift no se actualice o tarde mucho tiempo en completarse:

  • REFRESH MATERIALIZED VIEW (Actualizar vista materializada) falla con un error de permiso
  • Aparece el error: Invalid operation: Materialized view mv_name could not be refreshed as a base table changed physically due to vacuum/truncate concurrently. Please try again; (Operación no válida: la vista materializada mv_name no se puede actualizar porque una tabla base se modificó de manera física debido a una operación de vacío/truncado simultánea. Inténtelo de nuevo;)
  • REFRESH MATERIALIZED VIEW (Actualizar vista materializada) no se puede actualizar
  • REFRESH MATERIALIZED VIEW (Actualizar vista materializada) se envió y se ejecutó durante mucho tiempo
  • La actividad de actualización no se muestra en una actualización automática debido a una carga de trabajo activa

Resolución

REFRESH MATERIALIZED VIEW (Actualizar vista materializada) falla con un error de permiso

Debe ser el propietario para realizar una operación REFRESH MATERIALIZED VIEW (Actualizar vista materializada) en una vista materializada. Además, debe tener los siguientes privilegios:

  • Privilegio SELECT (Seleccionar) en las tablas base subyacentes
  • Privilegio USAGE (Usar) para el esquema

Si la vista materializada es un recálculo completo en lugar de una actualización incremental, también debe tener el privilegio CREATE (Create) para el esquema. Para definir los privilegios, consulte GRANT (Conceder). Para obtener más información, consulte Actualización automática de una vista materializada.

Invalid operation: Materialized view mv_name could not be refreshed as a base table changed physically due to vacuum/truncate concurrently. Please try again; (Operación no válida: la vista materializada mv_name no se puede actualizar debido a que una tabla base se modificó de manera física debido a una operación de vacío/truncado simultánea. Inténtelo de nuevo;)

El error se produce cuando REFRESH MATERIALIZED VIEW (Actualizar vista materializada) y VACUUM (Vacío) se ejecutan simultáneamente en la tabla base. Una vez finalizada la operación, se puede volver a enviar REFRESH MATERIALIZED VIEW (Actualizar vista materializada).

REFRESH MATERIALIZED VIEW (Actualizar vista materializada) no se puede actualizar

Las siguientes operaciones pueden causar que no se puedan actualizar las vistas materializadas:

  • Cambio de nombre o eliminación de una columna.
  • Cambio del tipo de una columna.
  • Cambio del nombre de una tabla base o un esquema

Nota: Las vistas materializadas en este estado se pueden consultar, pero no se pueden actualizar. Las restricciones anteriores se aplican incluso si la columna no se utiliza en la vista materializada.

Para saber si los datos de la vista materializada están obsoletos y obtener la información sobre el estado de la vista materializada, utilice STV_MV_INFO. Para ver la actividad de actualización de la vista materializada, utilice SVL_MV_REFRESH_STATUS. En este estado no actualizable de las vista materializadas, debe eliminar y volver a crear la vista materializada para mantenerla actualizada.

A continuación, se muestran ejemplos de los mensajes de error que pueden aparecer:

```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 <mv namme> is unrefreshable as a base table was renamed.```

REFRESH MATERIALIZED VIEW (Actualizar vista materializada) se envió y se ejecutó durante mucho tiempo

REFRESH MATERIALIZED VIEW (Actualizar vista materializada) funciona como una consulta normal que se ejecuta en su clúster. Para confirmar que la consulta se está ejecutando, haga lo siguiente:

  • Si desea ver las consultas activas que se ejecutan en los datos, utilice STV_INFLIGHT.
  • Para registrar el estado actual de las consultas rastreadas por la administración de la carga de trabajo (workload management, WLM), utilice STV_WLM_QUERY_STATE.
  • Para obtener información sobre las consultas y los pasos de consulta que se ejecutan activamente en los nodos de procesamiento, utilice STV_EXEC_STATE.

El rendimiento de la operación REFRESH MATERIALIZED VIEW (Actualizar vista materializada) está sujeto a los siguientes factores:

  • Bloqueos de tablas: para ver las actualizaciones actuales de las tablas de la base de datos, consulte STV_LOCKS.
  • Recursos asignados: Para ver la configuración de la clase de servicio de WLM, consulte STV_WLM_SERVICE_CLASS_CONFIG.
  • Tipo de actualización: actualización incremental o completa. Para ver el tipo de actualización a la que se sometió la vista materializada, consulte SVL_MV_REFRESH_STATUS.

Si el rendimiento de REFRESH MATERIALIZED VIEW (Actualizar vista materializada) es lento, consulte Improve query performance (Mejorar el rendimiento de las consultas).

La actividad de actualización no se muestra en una actualización automática debido a una carga de trabajo activa

Amazon Redshift prioriza sus cargas de trabajo por encima de la actualización automática. Esta priorización podría detener la actualización automática para preservar el rendimiento de la carga de trabajo y retrasar la actualización de algunas vistas materializadas. En algunos casos, las vistas materializadas pueden necesitar un comportamiento de actualización más determinista. Para crear un comportamiento de actualización más determinista, utilice lo siguiente:

  • Actualización manual, tal como se describe en REFRESH MATERIALIZED VIEW (Actualizar vista materializada)
  • Actualización programada mediante las operaciones de la API del programador de Amazon Redshift o la consola

Para obtener más información, consulte Actualización automática de una vista materializada.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año