Publicado: Dec 21, 2017
O Amazon Redshift usa a materialização tardia agora para reduzir a quantidade de dados verificados e aprimorar o desempenho para queries com filtros de predicado.
A materialização tardia (filtragem no nível da linha) reduz a E/S para queries com filtros agrupando e fatorando na filtragem de predicado(s) antes de obter blocos de dados na coluna seguinte. Por exemplo, considere uma query com filtros em duas colunas realizada em uma tabela CUSTOMER_DETAIL com um milhão de linhas:
SELECT FIRST_NAME, LAST_NAME, EMAIL, CITY, SALES_REP, FROM CUSTOMER_DETAIL WHERE CUSTOMER_SINCE_DATE < ’01-01-2000’ AND CUSTOMER_STATUS_LEVEL IN (’Gold’ , ’Silver’) ;
Com a materialização tardia, o Redshift busca um lote de dados das colunas CUSTOMER_SINCE_DATE e CUSTOMER_STATUS_LEVEL e, em seguida, aplica os respectivos predicados. Se apenas 10% das linhas da tabela CUSTOMER_DETAIL atenderem aos filtros de predicados, o Redshift poderá economizar 90% da E/S para as colunas restantes, melhorando, dessa forma, o desempenho das queries. Além disso, ao verificar as colunas em lotes em vez de individualmente, o desempenho é aprimorado ainda mais.
Nesta versão, adicionamos uma nova coluna "is_rlf_scan" à tabela STL_SCAN. Se uma query usar a materialização tardia, essa coluna terá um valor de "t" ou TRUE; caso contrário, ela terá um valor de "f" ou FALSE.
O Amazon Redshift habilita a materialização tardia por padrão. Ela é acionada automaticamente para uma query quando o Redshift detecta que ela pode aprimorar o desempenho. Com a compilação 1.0.1583 mais recente, a materialização tardia está disponível em todas as regiões da AWS.