Quando le righe della tabella vengono aggiunte, eliminate o aggiornate, il motore colonnare non aggiorna immediatamente i dati nell'archivio di colonne. Contrassegna invece i contenuti interessati nell'archivio di colonne come non validi e le query vengono pianificate ed eseguite utilizzando sia i dati orientati alle colonne dell'archivio di colonne sia i dati orientati alle righe della cache di riga 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 50, il che indica che i contenuti specifici nel columnstore 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 prestazioni delle query in corso migliori per il workload dell'applicazione.
Inoltre, puoi aggiornare manualmente i dati di una tabella nell'archivio a colonne in qualsiasi momento. In genere, esegui un aggiornamento manuale quando vuoi che le modifiche a una tabella vengano applicate al columnstore il prima possibile dopo averle apportate.
Modifica la soglia di aggiornamento del motore colonnare
Modifica il valore del flag di database google_columnar_engine.refresh_threshold_percentage per modificare la soglia di aggiornamento del motore colonnare.
ALTER SYSTEM SET google_columnar_engine.refresh_threshold_percentage=THRESHOLD;
THRESHOLD: un valore intero compreso tra 1 e 100. Questo valore specifica la percentuale di blocchi di dati nei contenuti che devono diventare non validi affinché i contenuti vengano contrassegnati per l'aggiornamento.
Aggiorna manualmente i dati di una tabella nello spazio di archiviazione a colonne
Esegui la funzione SQL google_columnar_engine_refresh per aggiornare manualmente i dati di una tabella nell'archivio di colonne in memoria.
SELECT google_columnar_engine_refresh(TABLE_NAME);
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 utilizzando il formato SCHEMA_NAME.TABLE_NAME, ad esempio myschema.mytable.