Questa pagina fornisce una panoramica del motore a colonne offerto da AlloyDB per PostgreSQL e mostra come utilizzarlo.
Il motore colonnare AlloyDB accelera l'elaborazione delle query SQL di scansioni, join e aggregazioni fornendo i seguenti componenti:
Un magazzino delle colonne che contiene i dati delle tabelle e delle visualizzazioni materializzate per le colonne selezionate, riorganizzati in un formato orientato alle colonne.
Un pianificatore delle query e un motore di esecuzione colonnari per supportare l'uso dell'archivio a colonne nelle query.
Il motore colonnare può essere utilizzato nell'istanza principale, in un'istanza del pool di lettura o in entrambe. Puoi anche utilizzare la colonnizzazione automatica per analizzare il tuo carico di lavoro e compilare automaticamente il magazzino delle colonne con le colonne che offrono il miglior miglioramento del rendimento.
Per utilizzare il motore a colonne con una query specifica, tutte le colonne dei relativi frammenti, come unioni e scansioni, devono trovarsi nel magazzino delle colonne.
Per impostazione predefinita, il motore colonnare è impostato per utilizzare il 30% della memoria dell'istanza. A seconda del carico di lavoro, dell'utilizzo della memoria e se hai configurato un pool di lettura, puoi scegliere di ridurre l'allocazione della memoria dell'engine colonnare nell'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 del magazzino delle colonne. Per modificare le dimensioni della memoria utilizzata dal magazzino delle colonne, consulta Configurare le dimensioni del magazzino delle colonne. Per trovare le dimensioni della memoria del motore colonnare consigliate per la tua istanza, consulta Consiglia dimensioni della memoria del magazzino delle colonne.
Tipi di query che beneficiano del 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 dall'archivio a colonne:
Scansioni delle tabelle
- Dispone di filtri selettivi, come le clausole
WHERE
. - Utilizza un numero ridotto di colonne di una tabella o di una vista materializzata più grande.
- Utilizza espressioni come
LIKE
,SUBSTR
o "TAGLIA".
- Dispone di filtri selettivi, come le clausole
Funzioni di aggregazione
- Utilizzano solo le seguenti espressioni:
SUM
,MIN
,MAX
,AVG
eCOUNT
. - Si trovano all'inizio della query di una scansione colonnare.
- Non sono raggruppate o sono raggruppate per colonne.
- Utilizzano solo le seguenti espressioni:
ORDER-BY
eSORT
: solo quandoORDER-BY
oSORT
si trova nei risultati della scansione delle colonne a cui si accede dal motore colonnare.LIMIT
: solo se l'operatore si trova all'inizio della query di una scansione colonnare e prima di qualsiasi operatoreSORT
oGROUP BY
.INNER HASH JOIN
solo se le chiavi utilizzate sono colonne e non vengono utilizzati i qualificatori di join.Join selettivi solo se si trovano all'inizio della query di una scansione a colonne.
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
Per utilizzare il motore colonnare in un'istanza AlloyDB, svolgi i seguenti passaggi di alto livello:
Attiva il motore nell'istanza.
L'abilitazione del motore è un'operazione una tantum e richiede un riavvio.
Aggiungi colonne all'archivio colonne.
Per aggiungere colonne al magazzino delle colonne, utilizza uno dei seguenti metodi:
Utilizza la colonnarizzazione automatica, che analizza il carico di lavoro e aggiunge automaticamente le colonne.
Aggiungi le colonne manualmente in base alle tue conoscenze del carico di lavoro sui database nell'istanza.
Puoi monitorare i contenuti del magazzino delle colonne utilizzando la vista
g_columnar_relations
e, dopo aver aggiunto le colonne, puoi utilizzare l'istruzioneEXPLAIN
per verificare l'utilizzo del motore colonnare nelle query SQL.
Per istruzioni dettagliate su come utilizzare il motore colonnare, consulta Configurare il motore colonnare.
Quali dati puoi aggiungere al data store delle colonne
Esistono alcune limitazioni relative ai tipi di dati e alle origini dati che puoi utilizzare quando aggiungi colonne al repository delle colonne.
Tipi di dati supportati
Il motore colonnare supporta solo le colonne con i seguenti tipi di dati integrati:
array
bigint
boolean
bytea
char
date
decimal
double precision
enum
float4
float8
integer
json
jsonb
numeric
real
serial
short
smallint
text
timestamp
timestamptz
uuid
varchar
Il motore colonnare ignora qualsiasi tentativo di aggiungere manualmente colonne con tipi di dati non supportati al magazzino delle colonne.
Origini dati non supportate
Il motore a colonne non supporta tabelle o viste materializzate con i seguenti attributi come origini dati:
Tabelle partizionate non a livello di primo livello
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, lo strumento di ottimizzazione AlloyDB potrebbe scegliere di utilizzare la struttura a righe.
- Le colonne aggiunte manualmente al magazzino delle colonne non vengono rimosse automaticamente. Per rimuovere obbligatoriamente le colonne aggiunte manualmente, utilizza
google_columnar_engine_drop()
nell'istanza. - La colonnarizzazione automatica può 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 la sezione Tipi di dati supportati.
Gli aggiornamenti frequenti delle righe rendono non validi i dati delle colonne. 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_count
etotal_block_count
in g_columnar_relations per verificare se la tua tabella o vista è interessata. Se la tabella o la visualizzazione subiscono modifiche frequenti o di elevato volume, il valoreinvalid_block_count
sarà elevato.