Riscrittura delle query automatica - AWS Guida prescrittiva

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 delle query automatica

Amazon Redshift può riscrivere automaticamente le query SQL che non fanno esplicitamente riferimento a viste materializzate esistenti utilizzate per migliorare le prestazioni. L'invio diretto di query a una vista materializzata riduce il tempo di elaborazione della query, ma l'istruzione di quest'ultima deve essere modificata. Se utilizzi le viste materializzate per accelerare le query, è importante considerare come utilizzare in modo sistematico e automatico le viste materializzate per rispondere alle query. È possibile utilizzare la riscrittura trasparente per aggiungere o eliminare viste materializzate allo stesso modo di un indice, senza condizionare le istruzioni SQL esistenti. Amazon Redshift utilizza solo viste up-to-date materializzate quando riscrive automaticamente le query.

Come funziona la riscrittura delle query

Prendi in considerazione la seguente query SQL. La query unisce due tabelle: customer (oltre 10 milioni di righe) e order (oltre 10 miliardi di righe):

SELECT c.cust_id, c.first_name, sum(o.amount) as total_amount FROM orders o JOIN customer c ON c.cust_id = o.customer_id GROUP BY c.cust_id, c.first_name HAVING sum(o.amount) > 500;

Questa query unisce due tabelle di grandi dimensioni, applica un'aggregazione della somma sulla colonna o.amount, quindi filtra i risultati per visualizzare solo i clienti che hanno effettuato ordini superiori a 500 USD. Questa query potrebbe sfruttare molte risorse.

Ad esempio, considera la vista materializzata mv_total_orders della sezione Creazione di viste materializzate della presente guida. Dopo aver creato la vista, Amazon Redshift riscrive automaticamente la query precedente come segue:

SELECT cust_id, first_name, total_amount FROM mv_total_orders WHERE total_amount > 500;

Questa nuova query viene eseguita molto più velocemente perché utilizza una vista materializzata anziché unire due tabelle di grandi dimensioni.

La riscrittura delle query ha portato a una maggiore adozione delle viste materializzate per i seguenti motivi:

  1. Le viste materializzate supportano la riscrittura trasparente delle query. La riscrittura delle query trasforma un'istruzione SQL espressa in termini di tabelle in un'istruzione che accede a una o più viste materializzate. Questa trasformazione è trasparente per l'utente finale e non richiede alcun intervento e riferimento alla vista materializzata nell'istruzione SQL.

  2. Le viste materializzate semplificano l'applicazione di set di risultati comuni memorizzati nella cache e supportano ottimizzazioni tra query come il precalcolo.

  3. Nei data warehouse e negli scenari di integrazione dei dati, le viste materializzate possono materializzare i risultati di tabelle esterne per nascondere le differenze tra più origini dati, implementando repliche locali o suddividendo lettura/scrittura.

  4. La funzionalità di riscrittura delle query, combinata con la creazione automatica di viste materializzate, accelera l'autonomia del database.