Gestire manualmente i contenuti dello column store

Seleziona una versione della documentazione:

Questa pagina descrive come gestire manualmente i contenuti del motore colonnare per accelerare le prestazioni delle query. Spiega come aggiungere e rimuovere tabelle, viste materializzate e indici ScaNN.

Gestire tabelle, viste materializzate e indici ScaNN

A seconda del carico di lavoro, puoi aggiungere manualmente colonne all'archivio colonne o eliminare alcune o tutte le colonne di una tabella o di una vista materializzata dall'archivio colonne. La valutazione delle query utilizza automaticamente i dati colonnari archiviati per rispondere alle query.

Allo stesso modo, puoi aggiungere manualmente un indice ScaNN al motore colonnare per velocizzare la ricerca vettoriale. Ciò consente di eseguire ricerche efficienti del vicino più prossimo su set di dati di grandi dimensioni di vector embedding.

Quando scegli le tabelle, le viste materializzate e le colonne da aggiungere all'archivio colonne, tieni presente sia le dimensioni dell'archivio colonne sia la forma del carico di lavoro. I candidati ideali per la selezione includono tabelle o viste di grandi dimensioni che vengono sottoposte a scansione di frequente. All'interno di queste tabelle o viste, identifica gli indici non univoci di grandi dimensioni utilizzati dal carico di lavoro OLAP. Puoi aggiungere le colonne di questi indici all'archivio colonne ed eventualmente eliminare gli indici, eliminando così il costo delle prestazioni associato alla loro manutenzione sull'istanza principale.

Utilizza uno dei seguenti metodi per gestire i contenuti del motore colonnare:

Per informazioni sui tipi di dati e sulle origini dati che puoi utilizzare quando aggiungi tabelle, colonne e viste materializzate all'archivio colonne, consulta la sezione Quali dati puoi aggiungere all'archivio colonne.

Gestire i contenuti dell'archivio colonne aggiornando i flag di database

Puoi gestire manualmente i contenuti dell'archivio colonne aggiornando il flag di database google_columnar_engine.relations. Il flag ha un singolo valore che specifica tutte le origini dati dell'archivio colonne. Durante il riavvio, le colonne specificate in questo flag vengono inserite automaticamente nell'archivio colonne.

Puoi utilizzare questo flag insieme alla columnarizzazione automatica. Se il motore colonnare ha memoria disponibile dopo aver inserito le colonne specificate tramite il flag google_columnar_engine.relations, la columnarizzazione automatica aggiunge altre colonne all'archivio colonne, se necessario.

Per ulteriori informazioni sull'impostazione dei flag di database, consulta Configurare i flag di database di AlloyDB Omni.

Aggiungere colonne utilizzando i flag

Per aggiungere colonne all'archivio colonne, definisci il flag google_columnar_engine.relations. Imposta il valore su un elenco di elementi separati da virgole, in cui ogni elemento specifica un elenco di colonne da includere da una tabella specifica, in questo formato:

DATABASE_NAME.SCHEMA_NAME.TABLE_NAME(COLUMN_LIST)

Sostituisci quanto segue:

  • DATABASE_NAME: il database contenente le colonne da aggiungere all'archivio colonne.

  • SCHEMA_NAME: lo schema che identifica le tabelle o le viste materializzate da aggiungere all'archivio colonne, ad esempio public.

  • TABLE_NAME: la tabella o la vista materializzata contenente le colonne da aggiungere all'archivio colonne.

  • COLUMN_LIST: un elenco separato da virgole delle colonne da aggiungere al datastore colonne.

Per aggiungere tutte le colonne di una tabella o di una vista materializzata, ometti l'elenco delle colonne:

DATABASE_NAME.SCHEMA_NAME.TABLE_NAME

Sintassi SQL quando si utilizza google_columnar_engine.relations

L'esempio seguente mostra come utilizzare il comando ALTER SYSTEM per aggiungere due colonne nello schema public al datastore colonne.

ALTER SYSTEM SET google_columnar_engine.relations='DATABASE_NAME.public.TABLE_NAME(COLUMN_1,COLUMN_2)';

Eliminare colonne utilizzando i flag

Per eliminare le colonne dal datastore di colonne, imposta un nuovo valore per il flag google_columnar_engine.relations descritto nella sezione precedente, omettendo le colonne che vuoi eliminare.

Per eliminare tutte le colonne dall'archivio colonne, annulla l'impostazione del flag google_columnar_engine.relations.

Per ulteriori informazioni sull'impostazione dei flag di database, consulta Configurare i flag di database di AlloyDB Omni.

Gestire i contenuti dell'archivio colonne utilizzando le funzioni SQL

Puoi gestire manualmente i contenuti dell'archivio colonne utilizzando le funzioni SQL.

Stimare i requisiti di spazio dell'archivio colonne

Esegui la funzione SQL google_columnar_engine_estimate per stimare la quantità totale di spazio necessaria per una relazione nel motore colonnare.

Client psql

SELECT google_columnar_engine_estimate(
    relation => 'TABLE_NAME',
    columns => 'COLUMN_LIST'
);
    Sostituisci quanto segue:
  • TABLE_NAME: una stringa contenente il nome della tabella o della vista materializzata. Se la tabella o la vista si trova in uno schema diverso da public, specifica il nome dello schema, un punto e il nome della tabella o della vista, ad esempio 'myschema.mytable'.
  • COLUMN_LIST: una stringa contenente un elenco di nomi di colonne separati da virgole e sensibili alle maiuscole/minuscole che vuoi aggiungere. Se vuoi aggiungere tutte le colonne della tabella o della vista materializzata all'archivio colonne, ometti questo parametro.

Aggiungere colonne utilizzando le funzioni SQL

Esegui la funzione SQL google_columnar_engine_add per aggiungere colonne all'archivio colonne.

Questo metodo aggiunge le colonne specificate all'archivio colonne e gestisce le colonne solo nel nodo connesso. Le nuove colonne non vengono mantenute nell'archivio dopo i riavvii dell'istanza.

Questo metodo non modifica il google_columnar_engine.relations flag di database. La columnarizzazione automatica non considera le colonne aggiunte da questa funzione SQL.

Client psql

SELECT google_columnar_engine_add(
    relation => 'TABLE_NAME',
    columns => 'COLUMN_LIST'
);
    Sostituisci quanto segue:
  • ' TABLE_NAME ': una stringa contenente il nome della tabella o della vista materializzata. Se la tabella o la vista si trova in uno schema diverso da public, specifica il nome dello schema, un punto e il nome della tabella o della vista, ad esempio, 'myschema.mytable'.
  • 'COLUMN_LIST': una stringa contenente un elenco di nomi di colonne separati da virgole e sensibili alle maiuscole/minuscole che vuoi aggiungere. Se vuoi aggiungere tutte le colonne della tabella o della vista materializzata all'archivio colonne, ometti questo parametro.

Eliminare colonne utilizzando le funzioni SQL

Esegui la funzione SQL google_columnar_engine_drop nel seguente modo:

Client psql

SELECT google_columnar_engine_drop(
    relation => 'TABLE_NAME',
    columns => 'COLUMN_LIST'
);
Sostituisci quanto segue:
  • ' TABLE_NAME ': una stringa contenente il nome della tabella o della vista materializzata. Se la tabella o la vista si trova in uno schema diverso da public, specifica il nome dello schema, un punto e il nome della tabella o della vista, ad esempio, 'myschema.mytable'.
  • 'COLUMN_LIST': una stringa contenente un elenco di nomi di colonne separati da virgole e sensibili alle maiuscole/minuscole che vuoi aggiungere. Se vuoi aggiungere tutte le colonne della tabella o della vista materializzata all'archivio colonne, ometti questo parametro.

Puoi utilizzare la funzione google_columnar_engine_drop per rimuovere le colonne aggiunte modificando il flag di database google_columnar_engine.relations. Tuttavia, quando lo fai, queste colonne vengono aggiunte di nuovo all'archivio colonnare al riavvio dell'istanza.

Gestire gli indici ScaNN nel motore colonnare

Per accelerare la ricerca vettoriale, puoi caricare gli indici ScaNN nella cache degli indici del motore colonnare.

Aggiungere, rimuovere e verificare gli indici ScaNN utilizzando le funzioni SQL

Puoi aggiungere, rimuovere e verificare manualmente gli indici ScaNN dalla cache degli indici utilizzando le funzioni SQL. L'aggiunta di un indice alla cache può accelerare le query di ricerca vettoriale.

Aggiungere un indice ScaNN

Per aggiungere un indice specifico alla cache degli indici del motore colonnare, utilizza la seguente funzione SQL:

SELECT google_columnar_engine_add_index(index => 'SCANN_INDEX_NAME');

Sostituisci SCANN_INDEX_NAME con il nome dell'indice ScaNN che vuoi aggiungere alla cache degli indici del motore colonnare.

Rimuovere un indice ScaNN

Per eliminare un indice ScaNN specifico dal motore colonnare, utilizza la seguente funzione SQL:

SELECT google_columnar_engine_drop_index(index => 'SCANN_INDEX_NAME');

Sostituisci SCANN_INDEX_NAME con il nome dell'indice ScaNN che vuoi rimuovere.

Verificare l'utilizzo del motore colonnare

Per verificare se le scansioni dell'indice vettoriale utilizzano il motore colonnare, esegui il comando EXPLAIN ANALYZE con l'opzione COLUMNAR_ENGINE:

EXPLAIN (ANALYZE TRUE, SCANN TRUE, COSTS FALSE, TIMING FALSE, SUMMARY FALSE, VERBOSE FALSE, COLUMNAR_ENGINE TRUE)
SELECT * FROM t ORDER BY val <=> '[0.5,0.5,0.5,0.5]' LIMIT 100;

Il comando restituisce un piano di query simile al seguente:

Index Scan using t_ix3 on t t_1 (actual rows=100 loops=1)
      Order By: (val <=> '[0.5,0.5,0.5,0.5]'::vector)
      Limit: 100
      ScaNN Info: (... columnar engine nodes hit=6...)
      Columnar Engine ScaNN Info: (index found=true)

La presenza di columnar engine nodes hit e Columnar Engine ScaNN Info: (index found=true) nell'output conferma che il motore colonnare viene utilizzato per la query.