Questa pagina descrive come mantenere l'aggiornamento dei dati nello spazio di archiviazione a colonne del motore columnar in AlloyDB per PostgreSQL.
Quando le righe della tabella vengono aggiunte, eliminate o aggiornate, il motore colonnare non aggiorna immediatamente i dati nello spazio di archiviazione a colonne. Al contrario, contrassegna i contenuti interessati nell'archivio colonne come non validi e le query vengono pianificate ed eseguite utilizzando sia i dati orientati alle colonne dell'archivio colonne sia i dati orientati alle righe della cache delle righe e dell'archiviazione del database.
Nel tempo, man mano che sempre più blocchi di dati diventano non validi, i miglioramenti delle prestazioni delle query forniti dal motore colonnare vengono ridotti al punto in cui 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 nello column store. Per impostazione predefinita, il motore colonnare utilizza una soglia di aggiornamento di 50, il che indica che i contenuti specifici nello spazio di archiviazione a colonne vengono contrassegnati per l'aggiornamento quando il 50% dei contenuti non è più valido. Puoi modificare questa soglia di aggiornamento per regolare l'overhead dell'aggiornamento automatico e potenzialmente ottenere un rendimento migliore delle query in corso per il workload dell'applicazione.
Inoltre, puoi aggiornare manualmente le tabelle e gli indici ScaNN caricati nel motore colonnare in qualsiasi momento. In genere, esegui un aggiornamento manuale quando vuoi che le modifiche apportate a una tabella vengano riflesse nel column store il prima possibile dopo averle apportate.
Controllare 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 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 devi eseguire un aggiornamento manuale o modificare la soglia di aggiornamento automatico.
Per visualizzare la percentuale di invalidazione per tutte le relazioni nello spazio di archiviazione colonnare, esegui questa query:
SELECT relation_name, invalid_percentage FROM g_columnar_relations;
Per controllare la percentuale di invalidazione 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 invalidazione 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
Modificare 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 da 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_percentage
esistente. - Imposta il valore su un numero intero compreso tra
1
e100
. 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_ID
Sostituisci quanto segue:
- INSTANCE_ID: l'ID dell'istanza.
- THRESHOLD: un valore intero compreso tra
1
e100
. 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
Aggiornare manualmente le tabelle e gli indici ScaNN nello column store
Puoi aggiornare manualmente le tabelle e gli indici ScaNN nel motore colonnare in qualsiasi momento utilizzando funzioni SQL dedicate.
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
.
Allo stesso modo, per aggiornare manualmente un indice ScaNN nel motore a colonne, 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 ScaNN da aggiornare.