Informazioni sullo strumento di ottimizzazione delle query

Che cos'è uno strumento di ottimizzazione delle query?

Lo strumento di ottimizzazione delle query SQL di Cloud Spanner converte un'istruzione SQL dichiarativa, in cui vengono descritti i dati richiesti dalla query in un piano di esecuzione imperativo, che descrive un modo per ottenere con precisione tali dati. Il processo di trasformazione di un'istruzione dichiarativa in un piano di esecuzione delle query prevede trasformazioni in strutture ad albero utilizzate per rappresentare la query. Durante la produzione di un piano di esecuzione, lo strumento di ottimizzazione conserva il significato logico della query SQL originale in modo che vengano restituite le righe corrette.

Un altro ruolo importante dello strumento di ottimizzazione è produrre un piano di esecuzione efficace.

In che modo lo Strumento di ottimizzazione di Spanner produce piani di esecuzione efficienti?

Lo strumento di ottimizzazione di Spanner utilizza una combinazione di euristica consolidate e ottimizzazione basata sui costi per produrre piani efficienti. Alcune euristiche sono molto semplici, ad esempio "esegui filtri su macchine remote" anziché estrarre i dati dalla macchina locale. Altre euristiche sono più complesse, ma incarnano ancora il principio dello spostamento della logica che riduce il volume dei dati più vicino ai dati. Questo principio è particolarmente importante in un sistema che partiziona i dati in più macchine.

Non tutte le decisioni di esecuzione possono essere prese in modo efficace utilizzando queste regole fisse, quindi lo strumento di ottimizzazione di Spanner determina anche le decisioni in base al costo stimato delle alternative. Tali stime dei costi vengono calcolate utilizzando la struttura della query, lo schema del database e le stime del volume di dati che saranno prodotte da frammenti della query. Ad esempio, Spanner stima il numero di righe della tabella Brani idonee al filtro SongGenre = "Country" se tale filtro viene visualizzato in una query. Per agevolare il calcolo di tali stime, Spanner raccoglie periodicamente statistiche per caratterizzare la distribuzione dei dati in un database.

Per ulteriori informazioni sui piani di esecuzione delle query e su come vengono utilizzati da Cloud Spanner per eseguire query in un ambiente distribuito, consulta la sezione Piani di esecuzione delle query.

Controllo delle versioni dello strumento di ottimizzazione delle query

Nel corso del tempo, lo strumento di ottimizzazione delle query di Cloud Spanner si evolverà, ampliando l'insieme di scelte nel piano di esecuzione delle query e migliorando l'accuratezza delle stime che sono alla base di tali scelte, portando a piani di esecuzione delle query più efficienti.

Spanner rilascia gli aggiornamenti dello strumento di ottimizzazione come nuove versioni dello strumento di ottimizzazione delle query per migliorare l'efficienza dei suoi piani di esecuzione delle query. Per ulteriori informazioni sulle diverse versioni, consulta la sezione Versioni dello strumento di ottimizzazione delle query di Cloud Spanner.

Pacchetti di statistiche per l'ottimizzazione delle query

Spanner conserva le statistiche sulla distribuzione dei dati delle colonne di una tabella in modo da stimare il numero di righe prodotte da una query. Lo Strumento di ottimizzazione delle query utilizza queste stime per scegliere il piano di esecuzione della query migliore. Queste statistiche vengono aggiornate periodicamente da Spanner. Poiché le statistiche vengono utilizzate per scegliere i piani di esecuzione delle query, quando le statistiche vengono aggiornate è possibile che Spanner modifichi il piano di query utilizzato per una query.

Per impostazione predefinita, i database utilizzano automaticamente il pacchetto di statistiche generato più di recente. Puoi bloccare il database in una versione precedente del pacchetto di statistiche. Puoi inoltre eseguire singole query con un pacchetto di statistiche diverso dall'ultima.

Crea un nuovo pacchetto di statistiche

Spanner genera automaticamente un nuovo pacchetto di statistiche ogni tre giorni. Per creare manualmente un nuovo pacchetto di statistiche, utilizza l'istruzione ANALYZE DDL.

La creazione di un nuovo pacchetto di statistiche può migliorare il rendimento delle query dopo modifiche significative ai dati o allo schema del database, tra cui:

  • Il database elabora un numero elevato di inserimenti, aggiornamenti o eliminazioni.
  • Aggiungi un nuovo indice al database.
  • Aggiungi una nuova colonna a una tabella.

L'esecuzione di un'istruzione DDL ANALYZE aggiorna lo schema e avvia un'operazione a lunga esecuzione.

Dopo che Spanner ha completato l'esecuzione dell'istruzione, sono necessari fino a dieci minuti prima che lo Strumento per ottimizzare le query prendere in considerazione un nuovo pacchetto di statistiche nella relativa pianificazione delle query.

garbage collection di pacchetti di statistiche

I pacchetti di statistiche in Spanner vengono conservati per un periodo di 30 giorni dalla loro creazione, al termine dei quali sono soggetti a garbage collection.

La tabella INFORMATION_SCHEMA.SPANNER_STATISTICS integrata di Spanner contiene un elenco di pacchetti di statistiche disponibili. Ogni riga di questa tabella elenca un pacchetto di statistiche per nome e il nome contiene il timestamp di creazione del pacchetto in questione. Ogni voce contiene anche un campo denominato ALLOW_GC che definisce se un pacchetto può essere raccolto o meno.

Puoi bloccare l'intero database su uno qualsiasi dei pacchetti elencati in quella tabella. Il pacchetto delle statistiche bloccate non può essere garbage collection e il valore di ALLOW_GC viene ignorato finché il database è bloccato in questo pacchetto. Per utilizzare un determinato pacchetto di statistiche per una singola query, il pacchetto deve essere elencato con ALLOW_GC=FALSE o bloccato. In questo modo, si verificano errori nelle query dopo che il pacchetto di statistiche è stato raccolto. Il valore di ALLOW_GC può essere modificato utilizzando l'istruzione DDL ALTER STATISTICS.

Conservazione dei pacchi e informazioni personali

Un pacchetto di statistiche contiene istogrammi dei dati delle colonne, come da pratica standard di settore. In questo modo, lo Strumento di ottimizzazione delle query può selezionare i piani di query ottimali. L'istogramma viene creato utilizzando un piccolo campione di valori. Questo piccolo set di dati può contenere potenzialmente informazioni che consentono l'identificazione personale (PII).

Spanner crea regolarmente un nuovo pacchetto di statistiche e lo conserva per 30 giorni per impostazione predefinita. Pertanto, un piccolo campione di valori eliminati dal database potrebbe essere conservato per altri 30 giorni in istogrammi statistici. I pacchetti di statistiche bloccati con l'opzione di database optimizer_statistics_package o i pacchetti con l'opzione ALLOW_GC=FALSE non verranno garbati. Gli istogrammi in questi pacchetti possono contenere valori eliminati dal database per un periodo più lungo. Inoltre, i contenuti dei pacchetti di statistiche sono inclusi nei backup dei database.

Le statistiche dello strumento di ottimizzazione vengono memorizzate in forma crittografica allo stesso modo dei dati utente.

La quantità totale di spazio di archiviazione richiesta per questi pacchetti è solitamente inferiore a 100 MB e viene conteggiata ai fini del calcolo dei costi totali di archiviazione.

Passaggi successivi