Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Réécriture automatique des requêtes pour utiliser des vues matérialisées
Vous pouvez utiliser la réécriture automatique des requêtes des vues matérialisées pour qu’Amazon Redshift réécrive les requêtes afin d’utiliser les vues matérialisées. Cela accélère les applications des requêtes, même celles qui ne font pas explicitement référence à une vue matérialisée. Lorsqu’Amazon Redshift réécrit des requêtes, il utilise uniquement des vues matérialisées à jour.
Notes d’utilisation
Pour vérifier si la réécriture automatique des requêtes est utilisée, vérifiez le plan de requête ou STL_EXPLAIN. Voici une instruction SELECT et la sortie EXPLAIN du plan de requête d’origine.
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)
Voici la sortie EXPLAIN après une réécriture automatique réussie. Cette sortie inclut une analyse de la vue matérialisée dans le plan de requête qui remplace des parties du plan de requête d’origine.
* 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)
Seules les up-to-date (nouvelles) vues matérialisées sont prises en compte pour la réécriture automatique des requêtes, quelle que soit la stratégie d'actualisation (automatique, planifiée ou manuelle). Par conséquent, la requête d'origine renvoie up-to-date des résultats. Lorsqu’une vue matérialisée est explicitement référencée dans les requêtes, Amazon Redshift accède aux données stockées dans la vue matérialisée. Il est possible que ces données ne reflètent pas les dernières modifications des tables de base de la vue matérialisée.
Vous pouvez utiliser la réécriture automatique des requêtes des vues matérialisées créées sur le cluster version 1.0.20949 ou ultérieure.
Vous pouvez interrompre la réécriture automatique des requêtes au niveau de la séance en définissant SET mv_enable_aqmv_for_session sur FALSE.
Limites
Voici les limites de l’utilisation de la réécriture automatique des requêtes des vues matérialisées :
La réécriture automatique des requêtes fonctionne avec des vues matérialisées qui ne font pas référence à ou n’incluent aucun des éléments suivants :
Sous-requêtes
Outer join left, right ou full
Opérations d’ensemble
Toutes les fonctions d’agrégation, sauf SUM, COUNT, MIN, MAX et AVG. (Il s’agit des seules fonctions d’agrégation qui fonctionnent avec la réécriture automatique des requêtes.)
Toutes les fonctions d’agrégation avec DISTINCT
Toutes les fonctions de fenêtrage
Clauses SELECT DISTINCT ou HAVING
Tables externes
Toute autre vue matérialisée
La réécriture automatique des requêtes réécrit les requêtes SELECT qui font référence aux tables Amazon Redshift définies par l’utilisateur. Amazon Redshift ne réécrit pas les requêtes suivantes :
Les instructions CREATE TABLE AS
Les instructions SELECT INTO
Les requêtes sur des catalogues ou des tables système
Les requêtes avec jointures externes ou clause SELECT DISTINCT
Si une requête n’est pas réécrite automatiquement, vérifiez si vous disposez de l’autorisations SELECT sur la vue matérialisée et si l’option mv_enable_aqmv_for_session est définie sur TRUE.
Vous pouvez également vérifier si vos vues matérialisées sont éligibles à la réécriture automatique des requêtes en inspectant STV_MV_INFO. Pour de plus amples informations, veuillez consulter STV_MV_INFO.