Regravação automática de consulta para usar visões materializadas
Você pode usar a regravação automática de consultas de visões materializadas no Amazon Redshift para que o Amazon Redshift regrave as consultas para usar visões materializadas. Isso acelera os workloads de consulta, mesmo para consultas que não fazem referência explícita a uma visualização materializada. Ao regravar consultas, o Amazon RedShift usa somente visões materializadas atualizadas.
Observações de uso
Para verificar se a regravação automática de consultas é usada para uma consulta, você pode inspecionar o plano de consulta ou STL_EXPLAIN. A seguir é mostrado uma instrução SELECT e a saída EXPLAIN do plano de consulta original.
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 seguir é mostrado a saída EXPLAIN após uma regravação automática bem-sucedida. Essa saída inclui uma varredura na visualização materializada no plano de consulta que substitui partes do plano 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)
Somente visões materializadas atualizadas (novas) são consideradas para regravação automática de consultas, independentemente da estratégia de atualização, como automática, programada ou manual. Assim, a consulta original retorna resultados atualizados. Quando uma visualizações materializada é explicitamente referenciada em consultas, o Amazon Redshift acessa os dados armazenados atualmente na visualizações materializada. Esses dados podem não refletir as últimas alterações das tabelas base da visualização materializada.
É possível usar a regravação automática de consultas de visões materializadas criadas na versão de cluster 1.0.20949 ou posterior.
Você pode interromper a regravação automática de consulta no nível da sessão usando SET mv_enable_aqmv_for_session como FALSE.
Limitações
A seguir estão as limitações para usar a regravação automática de consultas de visões materializadas:
A regravação automática de consulta funciona com visões materializadas que não fazem referência ou incluem qualquer um dos seguintes itens:
Subconsultas
Esquerda, direita ou junções externas completas
Operações de conjunto
Todas as funções agregadas, exceto SUM, COUNT, MIN e MAX e AVG; (Essas são as únicas funções agregadas que funcionam com a reescrita automática de consultas.)
Todas as funções agregadas com DISTINCT
Todas as funções da janela
Cláusulas SELECT DISTINCT ou HAVING
Tabelas externas
Outras visões materializadas
A reescrita automática de consulta regrava consultas SELECT que se referem a tabelas definidas pelo usuário do Amazon Redshift. O Amazon Redshift não regrava as seguintes consultas:
Instruções CREATE TABLE AS
Instruções SELECT INTO
Consultas em catálogos ou tabelas de sistema
Consultas com junções externas ou uma cláusula SELECT DISTINCT
Se uma consulta não for regravada automaticamente, confira se você tem o privilégio SELECT na visualização materializada especificada e se a opção mv_enable_aqmv_for_session está definida como TRUE.
Você também pode verificar se suas visões materializadas são elegíveis para regravação automática de consultas inspecionando STV_MV_INFO. Para obter mais informações, consulte STV_MV_INFO.