Il motore colonnare AlloyDB Omni accelera l'elaborazione delle query SQL di scansioni, join e aggregazioni fornendo i seguenti componenti:
Un archivio a colonne che contiene i dati di tabelle e viste materializzate per le colonne selezionate, riorganizzati in un formato orientato alle colonne.
Un motore di esecuzione e pianificazione delle query colonnari che supporta l'utilizzo dell'archivio a colonne nelle query.
Puoi utilizzare il motore colonnare sull'istanza principale, su un'istanza del pool di lettura o su entrambe. Puoi anche utilizzare la columnarizzazione automatica per analizzare il carico di lavoro e popolare automaticamente l'archivio a colonne con le colonne che offrono il miglior aumento delle prestazioni.
Per utilizzare il motore colonnare con una query specifica, tutte le colonne a cui viene fatto riferimento nella query, come join e scansioni, devono essere nell'archivio a colonne.
Per impostazione predefinita, il motore colonnare è configurato per utilizzare 1 GB della memoria dell'istanza. A seconda del carico di lavoro, della memoria utilizzata e se hai configurato un pool di lettura, puoi scegliere di ridurre l'allocazione della memoria del motore colonnare sull'istanza principale e allocare più memoria all'istanza del pool di lettura.
Per visualizzare e monitorare l'utilizzo della memoria da parte del motore colonnare, consulta Visualizzare l'utilizzo della memoria dell'archivio a colonne. Per modificare le dimensioni della memoria utilizzata dall'archivio a colonne, consulta Configurare le dimensioni dell'archivio a colonne. Per trovare le dimensioni della memoria del motore colonnare consigliate per la tua istanza, consulta Consigliare le dimensioni della memoria dell'archivio a colonne.
Tipi di query che traggono vantaggio dal motore colonnare
Alcune query possono trarre vantaggio dal motore colonnare. Di seguito è riportato un elenco di operazioni e dei relativi pattern di query che traggono il massimo vantaggio dal motore colonnare:
| Operazione | Pattern di query |
|---|---|
| Scansione della tabella | Filtri selettivi, ad esempio clausole WHERE.Un numero ridotto di colonne da una tabella o una vista materializzata più grande. Espressioni come LIKE, SUBSTR o TRIM. |
| Funzioni di aggregazione | Solo espressioni come SUM, MIN, MAX, AVG e COUNT.All'inizio della query di una scansione colonnare. Non raggruppate o raggruppate per colonne. |
ORDER-BY |
Solo se l'operatore si trova all'inizio della query di una scansione colonnare. |
SORT |
Solo se l'operatore si trova all'inizio della query di una scansione colonnare e ordina solo le colonne di base della tabella o della vista materializzata. |
LIMIT |
Solo se l'operatore si trova all'inizio della query
di una scansione colonnare e precede gli operatori SORT o GROUP BY. |
INNER HASH JOIN |
Solo se le chiavi utilizzate sono colonne e non vengono utilizzati qualificatori di join. |
| Join selettive | Solo se le join si trovano all'inizio della query di una scansione colonnare. |
Per ulteriori informazioni sulle query che funzionano meglio con il motore colonnare, se
il motore colonnare è stato utilizzato da una query e come è stato utilizzato, consulta
Verificare l'utilizzo del motore colonnare utilizzando EXPLAIN.
Come utilizzare il motore colonnare in un'istanza AlloyDB Omni
Per utilizzare il motore colonnare in un'istanza AlloyDB Omni, segui questi passaggi di alto livello:
Abilita il motore sull'istanza.
L'abilitazione del motore è un'operazione una tantum e richiede il riavvio del database.
Aggiungi colonne al datastore a colonne.
Per aggiungere colonne all'archivio a colonne, utilizza uno dei seguenti metodi:
Utilizza la columnarizzazione automatica, che analizza il carico di lavoro e aggiunge automaticamente le colonne.
Aggiungi le colonne manualmente in base alla tua conoscenza del carico di lavoro sui database nell'istanza.
Puoi monitorare i contenuti dell'archivio a colonne utilizzando la
g_columnar_relationsvista e, dopo aver aggiunto le colonne, puoi utilizzare l'EXPLAINistruzione per verificare l'utilizzo del motore colonnare nelle query SQL.
Per istruzioni dettagliate su come utilizzare il motore colonnare, consulta Configurare il motore colonnare.
Dati che puoi aggiungere all'archivio a colonne
Esistono alcune limitazioni sui tipi di dati e sulle origini dati che puoi utilizzare quando aggiungi colonne all'archivio a colonne.
Tipi di dati supportati
Il motore colonnare supporta solo le colonne con i seguenti tipi di dati integrati:
arraybigintbooleanbyteachardatedecimaldouble precisionenumfloat4float8integerjsonjsonbnumericrealserialshortsmallinttexttimestampuuidvarchar
Il motore colonnare ignora tutti i tentativi di aggiungere manualmente all'archivio a colonne le colonne con tipi di dati non supportati.
Origini dati non supportate
Il motore colonnare non supporta tabelle o viste materializzate con i seguenti attributi come origini dati:
Tabelle partizionate non foglia
Tabelle esterne
Tabelle o viste con meno di 5000 righe
Limitazioni del motore colonnare
- Se esegui una query analitica su una colonna con un indice, l'ottimizzatore AlloyDB Omni potrebbe scegliere di utilizzare l'archivio a righe.
- Le colonne aggiunte manualmente all'archivio a colonne non vengono rimosse automaticamente. Per forzare la rimozione
delle colonne aggiunte manualmente, utilizza
google_columnar_engine_dropsull'istanza. - La columnarizzazione automatica potrebbe aggiungere e rimuovere dinamicamente le colonne in base all'utilizzo delle query.
- Non tutti i tipi di dati sono supportati dal motore colonnare. Per visualizzare i tipi di dati supportati, consulta Tipi di dati supportati.
Gli aggiornamenti frequenti delle righe invalidano i dati colonnari. Per convalidare una tabella o una vista materializzata nell'archivio colonnare, puoi ridurre la frequenza di aggiornamento o pianificare aggiornamenti più frequenti del motore colonnare.
Puoi confrontare le colonne
invalid_block_countetotal_block_counting_columnar_relationsper verificare se la tabella o la vista è interessata. Se apporti modifiche frequenti o di grandi dimensioni alla tabella o alla vista, il valore diinvalid_block_countsarà elevato.