Panoramica del motore colonnare

Seleziona una versione della documentazione:

Questo documento fornisce istruzioni per l'utilizzo del motore colonnare AlloyDB Omni e presuppone che tu abbia familiarità con PostgreSQL.

Il motore colonnare AlloyDB Omni accelera l'elaborazione delle query SQL di scansioni, join e aggregazioni fornendo i seguenti componenti:

  • Un archivio di colonne che contiene i dati delle tabelle e delle viste materializzate per le colonne selezionate, riorganizzati in un formato orientato alle colonne.

  • Un planner di query colonnare e un motore di esecuzione 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 una replica di lettura o su entrambe. Puoi anche utilizzare l'auto-colonnarizzazione per analizzare il workload e compilare automaticamente l'archivio di colonne con le colonne che offrono il miglior miglioramento delle prestazioni.

Per utilizzare il motore colonnare con una query specifica, tutte le colonne a cui viene fatto riferimento nella query, ad esempio in join e scansioni, devono trovarsi nell'archivio di colonne.

Per impostazione predefinita, il motore colonnare è configurato per utilizzare 1 GB della memoria dell'istanza. A seconda del workload, della memoria utilizzata e della configurazione di un'istanza del pool di lettura o di una replica di lettura, puoi scegliere di ridurre l'allocazione della memoria del motore colonnare nell'istanza principale e allocare più memoria all'istanza del pool di lettura o alla replica di lettura.

Per visualizzare e monitorare la memoria utilizzata dal motore colonnare, consulta Visualizza la memoria utilizzata dall'archivio di colonne. Per modificare le dimensioni della memoria utilizzata dal columnstore, consulta Configura le dimensioni del columnstore. Per trovare le dimensioni della memoria del motore colonnare consigliate per la tua istanza, consulta Dimensioni della memoria dell'archivio di colonne consigliate.

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, come le clausole WHERE.
Un numero ridotto di colonne di 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 raggruppati o raggruppati 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 in base alle 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 qualsiasi operatore SORT o GROUP BY.
INNER HASH JOIN Solo se le chiavi utilizzate sono colonne e non vengono utilizzati qualificatori di join.
Join selettivi Solo se i join si trovano all'inizio della query di una scansione colonnare.

Per saperne di più su quali query funzionano meglio con il motore colonnare, se il motore colonnare è stato utilizzato da una query e come è stato utilizzato, consulta Verifica 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:

  1. Attiva il motore sull'istanza.

    L'attivazione del motore è un'operazione una tantum e richiede il riavvio del database.

  2. Aggiungi colonne all'archivio di colonne.

    Per aggiungere colonne all'archivio di colonne, utilizza uno dei seguenti metodi:

  3. Puoi monitorare i contenuti dell'archivio di colonne utilizzando la vista g_columnar_relations e, dopo aver aggiunto le colonne, puoi utilizzare l'istruzione EXPLAIN per verificare l'utilizzo del motore colonnare nelle query SQL.

Per istruzioni dettagliate su come utilizzare il motore colonnare, consulta Configura il motore colonnare.

Quali dati puoi aggiungere al datastore di colonne

Esistono alcune limitazioni relative ai tipi di dati e alle origini dati che puoi utilizzare quando aggiungi colonne all'archivio colonne.

Tipi di dati supportati

Il motore colonnare supporta solo 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
  • uuid
  • varchar

Il motore colonnare ignora qualsiasi tentativo di aggiungere manualmente colonne con tipi di dati non supportati al datastore di colonne.

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 di AlloyDB Omni potrebbe scegliere di utilizzare l'archiviazione a righe.
  • Le colonne aggiunte manualmente all'archivio delle colonne non vengono rimosse automaticamente. Per forzare la rimozione delle colonne aggiunte manualmente, utilizza google_columnar_engine_drop sulla tua istanza.
  • La funzionalità di auto-colonnarizzazione 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 alle righe invalidano i dati colonnari. Per convalidare una tabella o una vista materializzata nell'archivio colonnare, puoi ridurre la frequenza di aggiornamento o pianificare gli aggiornamenti del motore colonnare con maggiore frequenza.

    Puoi confrontare le colonne invalid_block_count e total_block_count in g_columnar_relations per verificare se la tabella o la vista è interessata. Se apporti modifiche frequenti o di volume elevato alla tabella o alla vista, il valore di invalid_block_count è elevato.

Passaggi successivi