Saltar al contenido

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

4 minutos de lectura
0

Mi vista materializada no se actualiza para mi clúster de Amazon Redshift.

Descripción corta

Los siguientes escenarios impiden o provocan tiempos de finalización prolongados para la actualización de una vista materializada en Amazon Redshift:

  • Los errores de permisos impiden las operaciones de REFRESH MATERIALIZED VIEW.
  • Las operaciones simultáneas de VACUUM y TRUNCATE de la tabla base bloquean una actualización y devuelven el siguiente 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».
  • REFRESH MATERIALIZED VIEW no se puede actualizar.
  • Las cargas de trabajo activas bloquean las actividades de actualización automatizadas.

Resolución

Nota: Para los clústeres de Amazon Redshift sin servidor, utiliza las vistas de supervisión de SYS en lugar de las vistas del sistema (STL, STV, SVL, SVV) que se utilizan en los clústeres aprovisionados. Para obtener más información, consulta Asignación de vistas del sistema para migrar a vistas de supervisión de SYS.

Errores de permiso REFRESH MATERIALIZED VIEW

Para realizar una operación de REFRESH MATERIALIZED VIEW en una vista materializada, debes ser el propietario. También debes tener el privilegio SELECT en las tablas base subyacentes y el privilegio USAGE en el esquema.

Para realizar operaciones de recálculo completas, debes tener el privilegio CREATE en el esquema. Para obtener más información sobre cómo definir los privilegios, consulta GRANT.

Para obtener más información sobre la actualización automática, consulta Actualización automática de una vista materializada.

Se produce el siguiente error cuando se envían REFRESH MATERIALIZED VIEW y VACUUM para que se ejecuten simultáneamente en la tabla 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;».

Una vez finalizada la operación, vuelve a ejecutar el comando REFRESH MATERIALIZED VIEW.

La actualización de REFRESH MATERIALIZED VIEW falla

Las siguientes operaciones pueden provocar un error en la actualización de las vistas materializadas:

  • Cambias el nombre de una columna o la eliminas.
  • Cambias el tipo de una columna.
  • Cambias el nombre de una tabla o esquema base.

Nota: Las vistas materializadas en estas condiciones se pueden consultar, pero no se pueden actualizar. Las restricciones se aplican incluso si el pilar no se usa en la vista materializada.

Ejemplos de mensajes de error:

  • Detail: Procedure <mv_sp_*****_2_1> does not exist.
  • columna <column name> no existe.
  • DETAIL: schema "<schema name>" does not exist.
  • ERROR: Materialized view <my name> is unrefreshable as a base table was renamed.

Para ver la actividad de actualización de la vista materializada, utiliza SVL_MV_REFRESH_STATUS para un clúster aprovisionado de Amazon Redshift o SYS_MV_REFRESH_HISTORY para un clúster de Amazon Redshift sin servidor.

Para averiguar si los datos de la vista materializada están obsoletos y ver la información del estado de la vista materializada, utiliza STV_MV_INFO, SYS_MV_STATE o SYS_MV_REFRESH_HISTORY.

Cuando una vista materializada no pueda actualizarse, suéltela y vuelva a crearla para mantener los datos actualizados.

Operación REFRESH MATERIALIZED VIEW de larga duración

El comando REFRESH MATERIALIZED VIEW se ejecuta como una consulta normal en el clúster.

Para verificar la ejecución de la consulta, lleva a cabo las siguientes acciones:

  • Para comprobar las consultas activas en los datos, utiliza STV_INFLIGHT.
  • Para supervisar los estados actuales de las consultas de WLM, utiliza STV_WLM_QUERY_STATE.
  • Para revisar las consultas activas y los pasos de consulta en los nodos de procesamiento, utiliza STV_EXEC_STATE.

Para supervisar las operaciones de REFRESH MATERIALIZED VIEW, utiliza las siguientes vistas del sistema:

  • Para ver las actualizaciones actuales de las tablas de la base de datos, utiliza STV_LOCKS.
  • Para ver la configuración de la clase de servicio de WLM, utiliza STV_WLM_SERVICE_CLASS_CONFIG.
  • Para determinar si la vista materializada recibió una actualización incremental o completa, utiliza SVL_MV_REFRESH_STATUS.

Si el rendimiento de REFRESH MATERIALIZED VIEW es lento, consulta Mejora del rendimiento de las consultas.

Estado de actualización oculto durante la carga de trabajo activa

Amazon Redshift da prioridad a las cargas de trabajo por encima de la actualización automática. Esta priorización puede detener la actualización automática para mantener el rendimiento de la carga de trabajo y retrasar las actualizaciones de algunas vistas materializadas. Algunas situaciones pueden requerir un comportamiento de actualización más predecible para las vistas materializadas.

Para facilitar un comportamiento de actualización predecible, toma las siguientes medidas:

  • Ejecuta REFRESH MATERIALIZED VIEW manualmente.
  • Programa las actualizaciones a través de la API o la consola del programador de Amazon Redshift.
OFICIAL DE AWSActualizada hace 8 meses