Informazioni sul motore colonnare AlloyDB

Questa pagina fornisce una panoramica del motore colonnare 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 questi 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 colonnare per supportare l'utilizzo dell'archivio a colonne nelle query.

Il motore colonnare può essere utilizzato sull'istanza principale, su un'istanza del pool di lettura o su entrambe. Puoi anche utilizzare la colonnarizzazione automatica per analizzare il tuo carico di lavoro e compilare automaticamente l'archivio colonne con le colonne che offrono il miglior aumento delle prestazioni.

Per utilizzare il motore colonnare con una query specifica, tutte le colonne dei relativi frammenti, come join e scansioni, devono trovarsi nel column store.

Per impostazione predefinita, il motore colonnare è impostato per utilizzare il 30% della memoria dell'istanza. A seconda del workload, dell'utilizzo della memoria e se hai configurato un pool 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. Per visualizzare e monitorare l'utilizzo della memoria da parte del motore colonnare, vedi Visualizzare l'utilizzo della memoria dello store di colonne. Per modificare le dimensioni della memoria utilizzata dall'archivio colonne, consulta Configurare le dimensioni dell'archivio colonne. Per trovare le dimensioni della memoria del motore colonnare consigliate per la tua istanza, consulta Consiglia le dimensioni della memoria del column store.

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:

  • Scansioni di 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 `TRIM.
  • Funzioni di aggregazione

    • Utilizzano solo le seguenti espressioni: SUM, MIN, MAX, AVG e COUNT.
    • Si trovano all'inizio della query di una scansione colonnare.
    • Sono separati o raggruppati per colonne.
  • ORDER-BY e SORT: solo quando ORDER-BY o SORT 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 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 ulteriori informazioni su quali query funzionano meglio con il motore colonnare, se il motore colonnare è stato utilizzato da una query e come è stato utilizzato, vedi Verificare l'utilizzo del motore colonnare utilizzando EXPLAIN.

Come utilizzare il motore colonnare

Per utilizzare il motore colonnare in un'istanza AlloyDB, segui questi passaggi di alto livello:

  1. Abilita il motore sull'istanza.

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

  2. Aggiungi colonne all'archivio colonne.

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

  3. Puoi monitorare i contenuti dello column store utilizzando la g_columnar_relations vista 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, vedi Configurare il motore colonnare.

Quali dati puoi aggiungere al column store

Esistono alcune limitazioni relative ai tipi di dati e alle origini dati che puoi utilizzare quando aggiungi colonne allo spazio di archiviazione delle 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
  • timestamptz
  • uuid
  • varchar
  • vector (anteprima)

Il motore colonnare ignora qualsiasi tentativo di aggiungere manualmente colonne con tipi di dati non supportati allo store delle 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 AlloyDB potrebbe scegliere di utilizzare row-store.
  • Le colonne aggiunte manualmente all'archivio colonne non vengono rimosse automaticamente. Per forzare la rimozione delle colonne aggiunte manualmente, utilizza google_columnar_engine_drop() sulla tua istanza.
  • La columnarizzazione automatica può aggiungere e rimuovere dinamicamente 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.
  • Aggiornamenti frequenti delle righe invalidano i dati delle colonne. Per convalidare una tabella o una vista materializzata nell'archivio colonnare, puoi ridurre la frequenza di aggiornamento oppure pianificare aggiornamenti più frequenti del motore colonnare.

    Puoi confrontare le colonne invalid_block_count e total_block_count in g_columnar_relations per verificare se la tabella o la vista sono interessate. Se apporti modifiche frequenti o di grandi dimensioni alla tabella o alla visualizzazione, il valore di invalid_block_count sarà elevato.

Passaggi successivi