Puoi aggiungere manualmente tabelle, viste materializzate, colonne e indici vettoriali al columnstore per controllare quali dati vengono accelerati dal motore colonnare. Utilizza la gestione manuale quando hai bisogno di un controllo granulare sui contenuti dell'archivio a colonne, anziché affidarti all'auto-colonnarizzazione per gestire le colonne automaticamente.
Gestisci tabelle, viste materializzate e indici vettoriali
In base al tuo workload, puoi aggiungere manualmente colonne al columnstore o eliminare alcune o tutte le colonne di una tabella o di una vista materializzata dal columnstore. La valutazione delle query utilizza automaticamente i dati colonnari archiviati per rispondere alle query.
Analogamente, puoi aggiungere manualmente indici vettoriali HNSW o ScaNN al motore colonnare per velocizzare la ricerca vettoriale. L'accelerazione del motore colonnare per gli indici HNSW è in disponibilità generale (GA), mentre l'accelerazione per gli indici ScaNN è in anteprima. Ciò consente di eseguire ricerche efficienti del vicino più prossimo su set di dati di grandi dimensioni di vector embedding.
Quando scegli quali tabelle, viste materializzate e colonne aggiungere al columnstore, considera sia le dimensioni del columnstore sia la forma del workload. I candidati ideali per la selezione includono tabelle o viste di grandi dimensioni che vengono analizzate di frequente. All'interno di queste tabelle o viste, identifica gli indici non univoci di grandi dimensioni utilizzati dal workload OLAP. Puoi aggiungere le colonne di questi indici al columnstore ed eventualmente eliminare gli indici, eliminando così il costo in termini di prestazioni associato alla loro manutenzione nell'istanza principale.
Utilizza uno dei seguenti metodi per gestire i contenuti del motore colonnare:
- Gestisci i contenuti dell'archivio di colonne aggiornando i flag di database
- Gestisci i contenuti dell'archivio di colonne utilizzando le funzioni SQL
Consulta Quali dati puoi aggiungere al column store per informazioni sui tipi di dati e sulle origini dati che puoi utilizzare quando aggiungi tabelle, colonne e viste materializzate al column store.
Prima di iniziare
- Devi disporre di uno di questi ruoli IAM nel progetto Google Cloud che stai utilizzando:
roles/alloydb.admin(il ruolo IAM predefinito AlloyDB Admin)roles/owner(il ruolo IAM di base Proprietario)roles/editor(il ruolo IAM di base Editor)
Se non disponi di nessuno di questi ruoli, contatta l'Amministratore organizzazione per richiedere l'accesso.
Gestisci i contenuti del columnstore aggiornando i flag di database
Puoi gestire manualmente i contenuti dell'archivio di colonne aggiornando il flag di database google_columnar_engine.relations. Il flag ha un unico valore che specifica tutte le origini dati del columnstore. Durante il riavvio, le colonne specificate in questo flag vengono inserite automaticamente nell'archivio di colonne.
Puoi utilizzare questo flag insieme all'auto-colonnarizzazione. Se il motore colonnare ha memoria disponibile dopo aver compilato le colonne specificate tramite il flag google_columnar_engine.relations, l'auto-colonnarizzazione aggiunge altre colonne all'archivio di colonne, se necessario.
Per saperne di più sull'impostazione dei flag di database di un'istanza utilizzando Google Cloud CLI o la console Google Cloud , consulta Configura i flag di database di un'istanza.
Aggiungi colonne utilizzando i flag
Per aggiungere colonne all'archivio di colonne, definisci il flag google_columnar_engine.relations di un'istanza. 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 di colonne.
SCHEMA_NAME: lo schema che identifica le tabelle o le viste materializzate da aggiungere allo spazio di archiviazione a colonne, ad esempio
public.TABLE_NAME: la tabella o la vista materializzata contenente le colonne da aggiungere al columnstore.
COLUMN_LIST: un elenco separato da virgole delle colonne da aggiungere al column store.
Per aggiungere tutte le colonne di una tabella o di una vista materializzata, ometti l'elenco delle colonne:
DATABASE_NAME.SCHEMA_NAME.TABLE_NAME
Per saperne di più sull'impostazione dei flag di database su un'istanza, consulta Configura i flag di database di un'istanza.
Sintassi di gcloud CLI quando utilizzi google_columnar_engine.relations
Se utilizzi Google Cloud CLI per impostare il flag google_columnar_engine.relations, devi utilizzare la sintassi del delimitatore alternativo per separare i flag di database impostati. Questo perché l'elenco delle colonne è separato da virgole, il che richiede l'utilizzo di un carattere diverso dalla virgola quando specifichi i flag nello stesso argomento della riga di comando.
L'esempio seguente mostra come utilizzare gcloud CLI per aggiungere due colonne dello schema public all'archivio di colonne. L'esempio imposta un flag separato per attivare il motore colonnare, perché l'utilizzo del comando gcloud alloydb instances update per impostare un flag di database deve impostare anche tutti gli altri flag di database per i quali vuoi avere valori non predefiniti, anche se sono già impostati.
gcloud alloydb instances update INSTANCE_NAME \
--database-flags=^:^\
google_columnar_engine.relations='DATABASE_NAME.public.TABLE_NAME(COLUMN_1,COLUMN_2)'\
:google_columnar_engine.enabled=on\
[:FLAG_3=VALUE_3 ...] \
--region=REGION_ID \
--cluster=CLUSTER_IDSostituisci quanto segue:
INSTANCE_NAME: il nome dell'istanzaDATABASE_NAME: il database contenente le colonne da aggiungere all'archivio di colonne.TABLE_NAME: il nome della tabella o della vista materializzata.COLUMN_1, COLUMN_2: le colonne da aggiungere all'archivio di colonne.REGION_ID: la regione dell'istanza.CLUSTER_ID: l'ID cluster.
Elimina colonne utilizzando i flag
Per eliminare colonne dall'archivio 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 di colonne, disattiva il flag google_columnar_engine.relations dell'istanza.
Per saperne di più sull'impostazione dei flag di database su un'istanza, consulta Configura i flag di database di un'istanza.
Gestisci i contenuti dell'archivio di colonne utilizzando le funzioni SQL
Puoi gestire manualmente i contenuti dell'archivio di colonne utilizzando le funzioni SQL.
Stima i requisiti di spazio di archiviazione delle colonne
Esegui la funzione SQL google_columnar_engine_estimate per stimare lo spazio totale necessario 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 sensibile alle maiuscole, separato da virgole, dei nomi delle colonne che vuoi aggiungere. Se vuoi aggiungere tutte le colonne della tabella o della vista materializzata allo store di colonne, ometti questo parametro.
Aggiungi colonne utilizzando le funzioni SQL
Esegui la funzione SQL google_columnar_engine_add per aggiungere colonne all'archivio di colonne.
Questo metodo aggiunge le colonne specificate all'archivio di colonne e gestisce le colonne solo nel nodo connesso. Le nuove colonne non vengono mantenute nell'archivio tra i riavvii dell'istanza.
Questo metodo non modifica il flag di database google_columnar_engine.relations. L'auto-colonnarizzazione non prende in considerazione 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 dapublic, 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 sensibile alle maiuscole, separato da virgole, dei nomi delle colonne che vuoi aggiungere. Se vuoi aggiungere tutte le colonne della tabella o della vista materializzata allo store di colonne, ometti questo parametro.
Elimina colonne utilizzando le funzioni SQL
Esegui la funzione SQL google_columnar_engine_drop come segue:
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 dapublic, 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 separato da virgole e sensibile alle maiuscole dei nomi delle colonne che vuoi eliminare. Se vuoi eliminare tutte le colonne della tabella o della vista materializzata dall'archivio di 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 nuovamente all'archivio colonnare al riavvio dell'istanza.
Gestisci gli indici vettoriali nel motore colonnare
Per accelerare Vector Search, puoi caricare gli indici vettoriali nella cache degli indici del motore colonnare. L'accelerazione del motore colonnare per gli indici HNSW è in disponibilità generale (GA), mentre l'accelerazione per gli indici ScaNN è in anteprima.
Aggiungi, rimuovi e verifica gli indici vettoriali utilizzando le funzioni SQL
Puoi aggiungere, rimuovere e verificare manualmente gli indici vettoriali dalla cache degli indici utilizzando le funzioni SQL. L'aggiunta di un indice alla cache può accelerare le query di ricerca vettoriale.
Aggiungi un indice vettoriale
Per aggiungere un indice specifico alla cache degli indici del motore colonnare, utilizza la seguente funzione SQL:
SELECT google_columnar_engine_add_index(index => 'INDEX_NAME');
Sostituisci INDEX_NAME con il nome dell'indice vettoriale HNSW o ScaNN che vuoi aggiungere alla cache degli indici del motore colonnare.
Rimuovi un indice vettoriale
Per eliminare un indice vettoriale specifico dal motore colonnare, utilizza la seguente funzione SQL:
SELECT google_columnar_engine_drop_index(index => 'INDEX_NAME');
Sostituisci INDEX_NAME con il nome dell'indice vettoriale che vuoi rimuovere.
Verifica 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.