Panoramica dello strumento di ottimizzazione delle query

Questa pagina descrive lo strumento di ottimizzazione delle query di Spanner e i suoi vantaggi.

Panoramica

Lo strumento di ottimizzazione delle query SQL di Spanner converte un'istruzione SQL dichiarativa, che descrivano quali dati sono richiesti dalla query in un piano di esecuzione imperativo, che descrive un modo per ottenere con precisione i dati. Il processo di La trasformazione di un'istruzione dichiarativa in un piano di esecuzione di query comporta trasformazioni in strutture ad albero utilizzate per rappresentare la query. La ottimizzatore, nel processo di produzione di un piano di esecuzione, conserva la logica significato della query SQL originale in modo che vengano restituite le righe corrette.

Un altro ruolo importante dell'ottimizzatore consiste nel produrre un piano di esecuzione in modo efficace.

In che modo l'ottimizzatore Spanner produce piani di esecuzione efficienti?

L'ottimizzatore di Spanner utilizza una combinazione di euristiche consolidate e ottimizzazione basata sui costi per produrre piani efficienti. Alcune euristiche sono molto come "eseguire filtri su macchine remote invece di estrarre alla macchina locale". Altre euristiche sono più complesse, ma incarnano comunque il principio della logica di spostamento che riduce il volume dei dati più vicino ai dati. Questo particolarmente importante in un sistema che esegue lo sharding dei dati machine learning.

Non tutte le decisioni di esecuzione possono essere prese in modo efficace utilizzando queste regole fisse; pertanto, Lo strumento di ottimizzazione di Spanner prende inoltre le decisioni in base a una il costo delle alternative. Queste stime dei costi vengono calcolate utilizzando la struttura la query, lo schema del database e le stime del volume dei dati verrà generato da frammenti della query. Ad esempio, Spanner stima quante righe della tabella Brani qualificano il filtro SongGenre = "Country" se il filtro viene visualizzato in una query. Per aiutare al calcolo di queste stime, Spanner raccoglie periodicamente le statistiche per caratterizzare la distribuzione dei dati in un database.

Inoltre, Spanner ottimizza l'esecuzione delle query determinare se è necessario utilizzare un metodo di elaborazione orientato a riga o colonna la query. Per ulteriori informazioni, consulta la sezione Ottimizzare le scansioni.

Per saperne di più sui piani di esecuzione delle query e su come vengono utilizzati Spanner per eseguire query in un ambiente distribuito; consulta Piani di esecuzione delle query.

Controllo delle versioni dello strumento di ottimizzazione delle query

Nel tempo, lo strumento di ottimizzazione delle query di Spanner si evolverà, ampliando un insieme di scelte nel piano di esecuzione delle query e il miglioramento dell'accuratezza le stime su cui si basano queste scelte, generando query più efficienti piani di esecuzione.

Spanner rilascia gli aggiornamenti dello strumento di ottimizzazione come nuovo ottimizzatore delle query per migliorare l'efficienza dei suoi piani di esecuzione delle query. Per scoprire di più sulle diverse versioni, consulta Versioni dello strumento di ottimizzazione delle query di Spanner.

Pacchetti di statistiche dello strumento di ottimizzazione delle query

Spanner mantiene le statistiche sulla distribuzione dei dati della tabella per stimare il numero di righe che verranno prodotte da una query. La query ottimizzatore utilizza queste stime per scegliere il piano di esecuzione delle query migliore. Queste statistiche vengono aggiornate periodicamente da Spanner. Poiché le statistiche vengono utilizzate per scegliere piani di esecuzione delle query, è possibile che Spanner modifichi il piano di query che utilizza per una query.

Per impostazione predefinita, i database utilizzano automaticamente il pacchetto di statistiche generato più di recente. Puoi bloccare il database a una versione precedente del pacchetto di statistiche. Inoltre possibilità di eseguire singole query con un pacchetto di statistiche rispetto al più recente.

Costruire 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 il metodo Istruzione DDL GoogleSQL ANALYZE o PostgreSQL Istruzione DDL ANALYZE.

Dopo modifiche significative ai dati o allo schema del database, la creazione di un nuovo di dati può migliorare le prestazioni delle query. Come best practice, costruisci un nuovo pacchetto di statistiche, se si verifica quanto segue:

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

Esecuzione di un'istruzione DDL ANALYZE aggiorna lo schema, avvia una operazione a lunga esecuzione e annulla la creazione delle statistiche attivate automaticamente.

Al termine dell'esecuzione dell'istruzione, Spanner richiede fino a dieci minuti per consentire allo strumento di ottimizzazione delle query di tenere conto di un nuovo pacchetto di statistiche nel suo la pianificazione delle query.

Garbage collection dei pacchetti di statistiche

I pacchetti di statistiche in Spanner vengono conservati per un periodo di 30 giorni dal giorno alla loro creazione, dopodiché saranno soggetti alla garbage collection.

Lo strumento Spanner integrato INFORMATION_SCHEMA.SPANNER_STATISTICS contiene un elenco dei pacchetti di statistiche disponibili. Ogni riga di questa tabella elenca un pacchetto di statistiche per nome, dove il nome contiene il timestamp di creazione del pacchetto in questione. Ogni voce contiene anche un campo chiamato ALLOW_GC che definisce se un pacchetto può essere garbage collection o meno.

Puoi bloccare l'intero database su uno qualsiasi dei pacchetti elencati al suo interno tabella. Il pacchetto delle statistiche fissato non sarà garbage collection e il valore di ALLOW_GC viene ignorato finché il database è bloccato a questo pacchetto. Per utilizzare un particolare pacchetto di statistiche per una singola query, il pacchetto deve elencata con ALLOW_GC=FALSE o fissata. In questo modo eviterai che le query abbiano esito negativo dopo il pacchetto delle statistiche è stato garbage collection. Puoi modificare il valore ALLOW_GC con GoogleSQL ALTER STATISTICS o PostgreSQL ALTER STATISTICS Istruzione DDL.

Conservazione dei pacchetti e informazioni che consentono l’identificazione personale (PII)

Un pacchetto di statistiche contiene istogrammi dei dati delle colonne, come standard pratica del settore. Questo aiuta l'ottimizzatore delle query a selezionare la query ottimale piani. L'istogramma viene creato utilizzando un piccolo campione di valori. Questo piccolo del set di dati può potenzialmente contenere PII.

Spanner crea regolarmente un nuovo pacchetto di statistiche. la conserva per impostazione predefinita per 30 giorni. Di conseguenza, un piccolo campione di valori eliminati il database può essere conservato per altri 30 giorni negli istogrammi statistici. Pacchetti di statistiche fissati con optimizer_statistics_package opzione di database o i pacchetti con l'opzione ALLOW_GC=FALSE non verranno inclusi nella garbage collection. Gli istogrammi in questi pacchetti potrebbero contenere valori eliminati dal database per un in un periodo più lungo. Inoltre, il contenuto dei pacchetti di statistiche è incluso in backup del database.

Le statistiche dell'ottimizzatore vengono archiviate in modo criptato come i dati utente.

La quantità totale di spazio di archiviazione richiesta per questi pacchetti è in genere inferiore a 100 MB e viene conteggiato ai fini dei costi totali di archiviazione.

Passaggi successivi