Publié le: Dec 21, 2017

Amazon Redshift utilise désormais la matérialisation tardive pour réduire le volume de données scannées et améliorer les performances des requêtes avec filtres de prédicat. 

La matérialisation tardive (filtrage au niveau ligne) réduit les E/S pour les requêtes avec filtres en groupant par lots et en réusinant les prédicats avant de récupérer les blocs de données dans la colonne suivante. Imaginons par exemple une requête avec des filtres sur deux colonnes dans une table CUSTOMER_DETAIL contenant un million de lignes : 

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’) ;

Avec la matérialisation tardive, Redshift récupère un lot de données dans les colonnes CUSTOMER_SINCE_DATE et CUSTOMER_STATUS_LEVEL, puis applique les prédicats respectifs. Si seulement 10 % de la table CUSTOMER_DETAIL satisfait aux filtres de prédicat, Redshift peut potentiellement économiser 90 % des E/S pour les colonnes restantes, améliorant ainsi les performances de requête. De même, en scannant les colonnes par lots plutôt que ligne par ligne, les performances sont améliorées. 

Avec cette version, nous avons ajouté une colonne ‘is_rlf_scan’ à la table STL_SCAN. Si une requête utilise la matérialisation tardive, cette colonne aura la valeur "t" ou TRUE. Sinon, elle aura la valeur "f" ou FALSE. 

Amazon Redshift autorise la matérialisation tardive par défaut. Elle se déclenche automatiquement pour une requête lorsque Redshift détecte que les performances de la requête peuvent être améliorées. Avec la dernière version 1.0.1583, la matérialisation tardive est disponible dans toutes les régions AWS.