Man mano che le righe cambiano, il motore colonnare contrassegna i dati dell'archivio di colonne interessati in AlloyDB per PostgreSQL come non validi e l'accelerazione delle query diminuisce gradualmente. Per mantenere le query veloci, puoi ottimizzare la soglia di aggiornamento automatico o aggiornare manualmente le tabelle e gli indici vettoriali.
Il motore colonnare non aggiorna immediatamente l'archivio di colonne quando le righe della tabella vengono aggiunte, eliminate o aggiornate. Le query vengono invece pianificate ed eseguite utilizzando sia i dati orientati alle colonne dello spazio di archiviazione delle colonne sia i dati orientati alle righe della cache delle righe e dello spazio di archiviazione del database.
Nel tempo, man mano che un numero sempre maggiore di blocchi di dati diventa non valido, i miglioramenti delle prestazioni delle query forniti dal motore colonnare si riducono al punto che i dati colonnari devono essere aggiornati per recuperare i miglioramenti delle prestazioni delle query. Quando viene raggiunta questa soglia di aggiornamento, il motore colonnare utilizza un job in background per aggiornare i dati non validi nel column store. Per impostazione predefinita, il motore colonnare utilizza una soglia di aggiornamento di 25, il che indica che i contenuti dello spazio di archiviazione a colonne vengono contrassegnati per l'aggiornamento quando il 25% dei contenuti non è più valido. Puoi modificare questa soglia di aggiornamento per regolare l'overhead dell'aggiornamento automatico e potenzialmente ottenere prestazioni delle query in corso migliori per il workload dell'applicazione.
Esegui un aggiornamento manuale delle tabelle e degli indici vettoriali HNSW e ScaNN quando vuoi che le modifiche a una tabella vengano applicate al columnstore il prima possibile dopo averle apportate.
Controlla la percentuale di dati non validi
Quando l'applicazione aggiunge, elimina o aggiorna righe in una tabella, il motore colonnare contrassegna i dati interessati nell'archivio di colonne come non validi. Puoi controllare la percentuale di dati non validi per le tabelle e le viste materializzate eseguendo una query sulla vista g_columnar_relations. In questo modo, puoi decidere se eseguire un aggiornamento manuale o modificare la soglia di aggiornamento automatico.
Per visualizzare la percentuale di annullamento convalida per tutte le relazioni nell'archivio colonnare, esegui questa query:
SELECT relation_name, invalid_percentage FROM g_columnar_relations;
Per controllare la percentuale di annullamento convalida per una tabella specifica, aggiungi una clausola WHERE alla query.
SELECT relation_name,
CASE
WHEN total_block_count > 0 THEN (invalid_block_count * 100.0 / total_block_count)
ELSE 0.0
END AS invalid_block_percentage
FROM
g_columnar_relations
WHERE
relation_name = 'TABLE_NAME';
Sostituisci TABLE_NAME con una stringa contenente il nome della tabella o della vista materializzata. Se la risorsa si trova in uno schema diverso da public, specifica il nome dello schema utilizzando il formato SCHEMA_NAME.TABLE_NAME, ad esempio myschema.mytable.
Per controllare la percentuale di annullamento convalida per un indice specifico, aggiungi una clausola WHERE alla query.
SELECT index_name,
CASE
WHEN total_block_count > 0 THEN (invalid_block_count * 100.0 / total_block_count)
ELSE 0.0
END AS invalid_block_percentage
FROM
g_columnar_indexes
WHERE
index_name = 'INDEX_NAME';
Sostituisci INDEX_NAME con una stringa contenente il nome dell'indice vettoriale.
Modifica la soglia di aggiornamento del motore colonnare
Per modificare la soglia di aggiornamento del motore colonnare, devi modificare il valore del flag di database google_columnar_engine.refresh_threshold_percentage per l'istanza AlloyDB.
Console
- Nella console Google Cloud , vai alla pagina Cluster.
- Fai clic sul nome del cluster che contiene l'istanza che vuoi configurare.
- Nella sezione Istanze nel cluster, individua l'istanza e fai clic su Modifica.
- Nella sezione Flag, aggiungi un nuovo flag o modifica il flag
google_columnar_engine.refresh_threshold_percentageesistente. - Imposta il valore su un numero intero compreso tra
0e100(o-1per disattivare l'aggiornamento automatico). Questo valore rappresenta la percentuale di dati non validi che attiva un aggiornamento. - Fai clic su Fine.
gcloud
Per utilizzare gcloud CLI, puoi installare e inizializzare Google Cloud CLI oppure puoi utilizzare Cloud Shell.
Per modificare la soglia di aggiornamento del motore colonnare, esegui questo comando:gcloud alloydb instances update INSTANCE_ID \
--database-flags=google_columnar_engine.refresh_threshold_percentage=THRESHOLD \
--cluster=CLUSTER_ID \
--region=REGION_ID \
--project=PROJECT_IDSostituisci quanto segue:
- INSTANCE_ID: l'ID dell'istanza.
- THRESHOLD: un valore intero compreso tra
0e100(o-1per disattivare l'aggiornamento automatico). Questo valore specifica la percentuale di blocchi di dati nei contenuti che devono diventare non validi affinché i contenuti vengano contrassegnati per l'aggiornamento. - CLUSTER_ID: l'ID del cluster in cui si trova l'istanza.
- REGION_ID: la regione del cluster.
- PROJECT_ID: l'ID del progetto
Aggiorna manualmente le tabelle e gli indici vettoriali nel column store
Puoi aggiornare manualmente le tabelle e gli indici vettoriali nel motore colonnare in qualsiasi momento utilizzando funzioni SQL dedicate. I tipi di indice supportati sono ScaNN e HNSW.
Per aggiornare i dati di una tabella nel motore colonnare, esegui la funzione google_columnar_engine_refresh.
SELECT google_columnar_engine_refresh('TABLE_NAME');
Sostituisci TABLE_NAME con una stringa contenente il nome della tabella o della vista materializzata. Se la risorsa si trova in uno schema diverso da public, specifica il nome dello schema utilizzando il formato SCHEMA_NAME.TABLE_NAME, ad esempio myschema.mytable.
Analogamente, per aggiornare manualmente un indice vettoriale nel motore colonnare, esegui la funzione google_columnar_engine_refresh_index.
SELECT google_columnar_engine_refresh_index(index => 'INDEX_NAME');
Sostituisci INDEX_NAME con una stringa contenente il nome dell'indice da aggiornare.