Reescritura automática de consultas - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Reescritura automática de consultas

Amazon Redshift puede reescribir automáticamente las consultas SQL que no hagan referencia explícita a las vistas materializadas existentes que se utilizan para mejorar el rendimiento. La consulta directa de una vista materializada minimiza el tiempo de procesamiento de la consulta, pero es necesario modificar la instrucción de la consulta. Si utiliza las vistas materializadas para acelerar las consultas, es importante considerar cómo utilizar las vistas materializadas de forma sistemática y automática para responder a las consultas. Puede utilizar la reescritura transparente para agregar o eliminar vistas materializadas de la misma forma que un índice, sin que esto afecte a las instrucciones SQL existentes. Amazon Redshift utiliza únicamente vistas up-to-date materializadas cuando reescribe automáticamente las consultas.

Cómo funciona la reescritura de consultas

Observe la siguiente consulta SQL. La consulta une dos tablas: cliente (más de 10 millones de filas) y pedido (más de 10 mil millones de filas):

SELECT c.cust_id, c.first_name, sum(o.amount) as total_amount FROM orders o JOIN customer c ON c.cust_id = o.customer_id GROUP BY c.cust_id, c.first_name HAVING sum(o.amount) > 500;

Esta consulta une dos tablas grandes y aplica una agregación de sumas en la columna o.amount y, a continuación, filtra los resultados para mostrar solo los clientes que hayan pedido más de 500 USD. Esta consulta podría utilizar muchos recursos.

Como ejemplo, observemos la vista materializada mv_total_orders de la sección Creación de vistas materializadas de esta guía. Una vez creada esta vista, Amazon Redshift reescribirá automáticamente la consulta anterior de la siguiente manera:

SELECT cust_id, first_name, total_amount FROM mv_total_orders WHERE total_amount > 500;

Esta nueva consulta se ejecuta mucho más rápidamente porque utiliza una vista materializada en lugar de unir dos tablas grandes.

La reescritura de las consultas llevó a una adopción más amplia de las vistas materializadas por las siguientes razones:

  1. Las vistas materializadas permiten la reescritura transparente de las consultas. La reescritura de consultas transforma una instrucción SQL expresada en términos de tablas en una instrucción que accede a una o más vistas materializadas. Esta transformación es transparente para el usuario final y no requiere ninguna intervención ni referencia a la vista materializada de la instrucción SQL.

  2. Las vistas materializadas simplifican la aplicación de conjuntos de resultados comunes almacenados en caché y admiten optimizaciones entre consultas, como la programación previa.

  3. Para el almacenamiento de datos y los escenarios de integración de datos, las vistas materializadas pueden plasmar los resultados de tablas externas para ocultar las diferencias entre varios orígenes de datos, mediante la implementación de réplicas locales o la división de lectura y escritura.

  4. La característica de reescritura de consultas, combinada con la creación automática de vistas materializadas, acelera la autonomía de la base de datos.