Creación de vistas materializadas en Amazon Redshift
En un entorno de almacenamiento de datos, las aplicaciones a menudo deben realizar consultas complejas en tablas de gran tamaño. Un ejemplo son las instrucciones SELECT, las cuales realizan uniones y agregaciones de varias tablas que contienen miles de millones de filas. Procesar estas consultas puede ser costoso en términos de recursos del sistema y el tiempo que se tarda en calcular los resultados.
Las vistas materializadas de Amazon Redshift proporcionan una manera de abordar estos problemas. Una vista materializada contiene un conjunto de resultados computados previamente, basados en una consulta de SQL sobre una o más tablas base. Puede emitir instrucciones SELECT para consultar una vista materializada, de la misma manera que puede consultar otras tablas o vistas en la base de datos. Amazon Redshift devuelve los resultados calculados de manera anticipada de la vista materializada, sin tener que acceder a las tablas base en absoluto. Desde el punto de vista del usuario, los resultados de la consulta se devuelven mucho más rápido en comparación con la recuperación de los mismos datos de las tablas base.
Las vistas materializadas son especialmente útiles para acelerar las consultas que son predecibles y repetidas. En lugar de realizar consultas con un uso intensivo de los recursos en grandes tablas (como las agrupaciones o las combinaciones de varios recursos), las aplicaciones pueden consultar una vista materializada y recuperar un conjunto de resultados computados con anticipación. Por ejemplo, considere el escenario en el que se utiliza un conjunto de consultas para completar paneles, como Amazon QuickSight. Este caso de uso es ideal para una vista materializada ya que las consultas son predecibles y repetidas una y otra vez.
Puede definir una vista materializada a partir de otras vistas materializadas. Use vistas materializadas en vistas materializadas para ampliar esta capacidad. En este enfoque, una vista materializada existente desempeña el mismo rol que una tabla base para que la consulta recupere datos.
Este enfoque es especialmente útil para reutilizar combinaciones calculadas con anticipación para diferentes opciones de agrupación o GROUP BY. Por ejemplo, tome una vista materializada que combine la información del cliente (que contiene millones de filas) con la información detallada de los pedidos de elementos (que contiene miles de millones de filas). Esta es una consulta costosa de calcular bajo demanda y de forma repetida. Puede utilizar diferentes opciones GROUP BY para las vistas materializadas que se crearon encima de esta vista materializada y combinarlas con otras tablas. De este modo, se ahorra tiempo de cálculo que, de otro modo, se utilizaría para ejecutar la costosa combinación subyacente en todas las oportunidades. La tabla STV_MV_DEPS muestra las dependencias de una vista materializada en otras vistas materializadas.
Cuando crea una vista materializada, Amazon Redshift ejecuta la instrucción SQL especificada por el usuario para recopilar los datos de la tabla o las tablas base, y almacena el conjunto de resultados. En la siguiente ilustración, se proporciona información general de la vista materializada tickets_mv
que define una consulta SQL mediante dos tablas base: events
y sales
.
![Materialized view diagram showing data flow from events and sales tables to tickets_mv view.](images/materialized-view.png)
Luego, puede utilizar estas vistas materializadas en consultas para acelerarlas. Además, Amazon Redshift puede reescribir automáticamente estas consultas para utilizar vistas materializadas, incluso cuando la consulta no referencie de manera explícita una vista materializada. La reescritura automática de consultas es especialmente útil a la hora de mejorar el rendimiento cuando no se pueden cambiar las consultas para utilizar vistas materializadas.
Para actualizar los datos de la vista materializada, puede utilizar la instrucción REFRESH MATERIALIZED VIEW en cualquier momento para actualizarla de forma manual. Amazon Redshift identifica los cambios que han tenido lugar en la tabla o las tablas base y, luego, aplica esos cambios a la vista materializada. Dado que la reescritura automática de las consultas requiere que las vistas materializadas estén actualizadas, como propietario de vistas materializadas, asegúrese de actualizarlas cada vez que se modifique una tabla base.
Amazon Redshift proporciona algunos métodos para mantener las vistas materializadas actualizadas con objeto de llevar a cabo la reescritura automática. Puede configurar las vistas materializadas con la opción de actualización automática para actualizar las vistas materializadas cuando se actualicen sus tablas base. Esta operación de actualización automática se ejecuta en el momento en el que los recursos del clúster estén disponibles para minimizar las interrupciones en otras cargas de trabajo. Dado que la programación de la actualización automática depende de la carga de trabajo, puede tener más control sobre el momento en que Amazon Redshift actualiza las vistas materializadas. Puede programar un trabajo de actualización de la vista materializada mediante la integración de la consola y de la API del programador de Amazon Redshift. Para obtener más información acerca de la programación de consultas, visite Programar una consulta en la consola de Amazon Redshift.
Hacer esto es especialmente útil cuando existe un requisito de acuerdo de nivel de servicios (SLA) para los datos actualizados de una vista materializada. También puede actualizar de forma manual cualquier vista materializada que se pueda actualizar automáticamente. Para obtener información sobre cómo crear vistas materializadas, consulte CREATE MATERIALIZED VIEW.
Puede emitir instrucciones SELECT para consultar una vista materializada. Para obtener información sobre cómo consultar vistas materializadas, consulte Consulta de una vista materializada. El conjunto de resultados con el tiempo se convertirá en obsoleto según se inserten, actualicen y eliminen los datos en las tablas base. Puede actualizar la vista materializada en cualquier momento para actualizarla con los últimos cambios de las tablas base. Para obtener información sobre cómo actualizar las vistas materializadas, consulte REFRESH MATERIALIZED VIEW.
Para obtener más información sobre los comandos SQL utilizados para crear y administrar vistas materializadas, consulte los siguientes temas:
Para obtener información acerca de las tablas del sistema y las vistas para supervisar las vistas materializadas, consulte los temas siguientes:
Temas
- Consulta de una vista materializada
- Reescritura automática de consultas para utilizar vistas materializadas
- Actualización de una vista materializada
- Vistas materializadas automatizadas
- Uso de una función definida por el usuario (UDF) en una vista materializada
- Ingesta de streaming a una vista materializada