Reescritura automática de consultas para utilizar vistas materializadas - Amazon Redshift

Reescritura automática de consultas para utilizar vistas materializadas

Puede utilizar la reescritura automática de las consultas de vistas materializadas en Amazon Redshift para que este servicio reescriba las consultas de manera que utilicen vistas materializadas. Esto acelera las cargas de trabajo de consulta, incluso para las consultas que no referencien de manera explícita una vista materializada. Cuando Amazon Redshift reescribe consultas, solo utiliza vistas materializadas que estén actualizadas.

Notas de uso

Para verificar si se utiliza la reescritura automática de consultas para una consulta en particular, puede inspeccionar el plan de la consulta o STL_EXPLAIN. A continuación, se muestra una instrucción SELECT y la salida EXPLAIN del plan original de la consulta.

SELECT catgroup, SUM(qtysold) AS sold FROM category c, event e, sales s WHERE c.catid = e.catid AND e.eventid = s.eventid GROUP BY 1; EXPLAIN XN HashAggregate (cost=920021.24..920021.24 rows=1 width=35) -> XN Hash Join DS_BCAST_INNER (cost=440004.53..920021.22 rows=4 width=35) Hash Cond: ("outer".eventid = "inner".eventid) -> XN Seq Scan on sales s (cost=0.00..7.40 rows=740 width=6) -> XN Hash (cost=440004.52..440004.52 rows=1 width=37) -> XN Hash Join DS_BCAST_INNER (cost=0.01..440004.52 rows=1 width=37) Hash Cond: ("outer".catid = "inner".catid) -> XN Seq Scan on event e (cost=0.00..2.00 rows=200 width=6) -> XN Hash (cost=0.01..0.01 rows=1 width=35) -> XN Seq Scan on category c (cost=0.00..0.01 rows=1 width=35)

A continuación, se muestra la salida EXPLAIN después de una reescritura automática exitosa. Esta salida incluye un análisis de la vista materializada en el plan de la consulta que reemplaza partes del plan de consulta original.

* EXPLAIN XN HashAggregate (cost=11.85..12.35 rows=200 width=41) -> XN Seq Scan on mv_tbl__tickets_mv__0 derived_table1 (cost=0.00..7.90 rows=790 width=41)

Para la reescritura automática de consultas, solo se consideran las vistas materializadas actualizadas (frescas), cualquiera que sea la estrategia de actualización, como la automática, la programada o la manual. Por lo tanto, la consulta original devuelve resultados actualizados. Cuando se referencia de manera explícita una vista materializada en las consultas, Amazon Redshift accede a los datos almacenados actualmente en la vista materializada. Es posible que estos datos no reflejen los últimos cambios de las tablas base de la vista materializada.

Puede utilizar la reescritura automática de las consultas de las vistas materializadas que se crean en un clúster de la versión 1.0.20949 o versiones posteriores.

Puede detener la reescritura automática de las consultas en el nivel de la sesión configurando SET mv_enable_aqmv_for_session como FALSE.

Limitaciones

A continuación, se presentan las limitaciones para utilizar la reescritura automática de las consultas de las vistas materializadas:

  • La reescritura automática de las consultas funciona con vistas materializadas que no referencian ni incluyen ninguna de las siguientes opciones:

    • subconsultas

    • combinación externa completa, izquierda o derecha

    • operaciones set

    • Cualquier función de agregación, excepto SUM, COUNT, MIN, MAX y AVG. (Estas son las únicas funciones agregadas que funcionan con la reescritura automática de consultas).

    • Cualquier función agregada con DISTINCT

    • Cualquier función de ventana

    • cláusulas SELECT DISTINCT o HAVING

    • tablas externas

    • otras vistas materializadas

  • La reescritura automática de las consultas reescribe las consultas SELECT que referencien tablas de Amazon Redshift definidas por el usuario. Amazon Redshift no reescribe las siguientes consultas:

    • instrucciones CREATE TABLE AS

    • instrucciones SELECT INTO

    • consultas a tablas de catálogos o sistema

    • consultas con combinaciones externas o una cláusula SELECT DISTINCT

  • Si una consulta no se reescribe automáticamente, verifique si tiene el permiso SELECT en la vista materializada especificada y si la opción mv_enable_aqmv_for_session está establecida en TRUE.

    También puede verificar si las vistas materializadas son aptas para la reescritura automática de las consultas inspeccionando STV_MV_INFO. Para obtener más información, consulte STV_MV_INFO.