Riscrittura automatica delle query per utilizzare le viste materializzate - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Riscrittura automatica delle query per utilizzare le viste materializzate

È possibile utilizzare la riscrittura automatica delle query delle viste materializzate in Amazon Redshift per consentire ad Amazon Redshift di riscrivere le query per utilizzare le viste materializzate. Questa operazione consente di accelerare i carichi di lavoro delle query anche per le query che non fanno riferimento esplicitamente a una vista materializzata. Quando Amazon Redshift riscrive le query, utilizza solo viste materializzate aggiornate .

Note per l'utilizzo

Per verificare se per una query viene utilizzata la riscrittura automatica delle query, è possibile esaminare il piano di query o STL_EXPLAIN. Di seguito sono illustrati un'istruzione SELECT e l'output EXPLAIN del piano di query originale.

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)

Quanto segue mostra l'output EXPLAIN dopo una riscrittura automatica riuscita. Questo output include una scansione della vista materializzata nel piano di query che sostituisce parti del piano di query originale.

* 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)

Per la riscrittura automatica delle query vengono prese in considerazione solo le up-to-date (nuove) viste materializzate, indipendentemente dalla strategia di aggiornamento, ad esempio automatica, pianificata o manuale. Pertanto, la query originale restituisce risultati. up-to-date Quando nelle query viene esplicitamente fatto riferimento a una vista materializzata, Amazon Redshift accede ai dati attualmente memorizzati nella vista materializzata. Questi dati potrebbero non riflettere le ultime modifiche delle tabelle di base della vista materializzata.

È possibile utilizzare la riscrittura automatica delle query delle viste materializzate create nella versione del cluster 1.0.20949 o successiva.

È possibile arrestare la riscrittura automatica delle query a livello di sessione utilizzando SET mv_enable_aqmv_for_session impostato su FALSE.

Limitazioni

Di seguito sono riportate le limitazioni per l'utilizzo della riscrittura automatica delle query delle viste materializzate:

  • La riscrittura automatica delle query funziona con viste materializzate che non fanno riferimento o includono uno dei seguenti elementi:

    • Sottoquery

    • Join left, right o full outer

    • Operazioni del set

    • Qualsiasi funzione di aggregazione, tranne SUM, COUNT, MIN, MAX e AVG. (Queste sono le uniche funzioni aggregate che funzionano con la riscrittura automatica delle query.)

    • Qualsiasi funzione aggregata con DISTINCT

    • Qualsiasi funzione finestra

    • Clausole SELECT DISTINCT o HAVING

    • Tabelle esterna

    • Altre viste materializzate

  • La riscrittura automatica delle query riscrive le query SELECT che fanno riferimento alle tabelle Amazon Redshift definite dall'utente. Amazon Redshift non riscrive le seguenti query:

    • Istruzioni CREATE TABLE AS

    • Istruzioni SELECT INTO

    • Query su cataloghi o tabelle di sistema

    • Query con join esterni o una clausola SELECT DISTINCT

  • Se una query non viene riscritta automaticamente, verifica se disponi dell'autorizzazione SELECT sulla vista materializzata specificata e che l'opzione mv_enable_aqmv_for_session sia impostata su TRUE.

    È inoltre possibile verificare se le viste materializzate sono idonee per la riscrittura automatica delle query ispezionando STV_MV_INFO. Per ulteriori informazioni, consultare STV_MV_INFO.