Wenn Tabellenzeilen hinzugefügt, gelöscht oder aktualisiert werden, werden die Daten im Spaltenspeicher nicht sofort aktualisiert. Stattdessen werden betroffene Inhalte im Spaltenspeicher als ungültig markiert. Abfragen werden geplant und ausgeführt, wobei sowohl spaltenorientierte Daten aus dem Spaltenspeicher als auch zeilenorientierte Daten aus dem Zeilencache und dem Datenbankspeicher verwendet werden.
Im Laufe der Zeit werden immer mehr Datenblöcke ungültig. Dadurch werden die Leistungsverbesserungen der spaltenorientierten Engine für Abfragen so weit reduziert, dass die spaltenorientierten Daten aktualisiert werden müssen, um die Abfrageleistung wieder zu verbessern. Wenn dieser Aktualisierungsschwellenwert erreicht ist, verwendet die spaltenorientierte Engine einen Hintergrundjob, um die ungültigen Daten im Spaltenspeicher zu aktualisieren. Standardmäßig verwendet die spaltenorientierte Engine einen Aktualisierungsschwellenwert von 50. Das bedeutet, dass bestimmte Inhalte im Spaltenspeicher für die Aktualisierung markiert werden, wenn 50% der Inhalte ungültig geworden sind. Sie können diesen Aktualisierungsschwellenwert ändern, um den Aufwand der automatischen Aktualisierung anzupassen und möglicherweise eine bessere laufende Abfrageleistung für Ihre Anwendung zu erzielen.
Außerdem können Sie die Daten einer Tabelle im Spaltenspeicher jederzeit manuell aktualisieren. Normalerweise führen Sie eine manuelle Aktualisierung durch, wenn Änderungen an einer Tabelle so schnell wie möglich nach der Vornahme der Änderungen im Spaltenspeicher berücksichtigt werden sollen.
Aktualisierungsgrenzwert der spaltenbasierten Engine ändern
Bearbeiten Sie den Wert des Datenbank-Flags google_columnar_engine.refresh_threshold_percentage
, um den Aktualisierungsschwellenwert der spaltenbasierten Engine zu ändern.
ALTER SYSTEM SET google_columnar_engine.refresh_threshold_percentage=THRESHOLD;
THRESHOLD
: Ein ganzzahliger Wert zwischen 1
und 100
. Dieser Wert gibt den Prozentsatz der Datenblöcke im Inhalt an, die ungültig werden müssen, damit der Inhalt für die Aktualisierung markiert wird.
Daten einer Tabelle im Spaltenspeicher manuell aktualisieren
Führen Sie die SQL-Funktion google_columnar_engine_refresh
aus, um die Daten einer Tabelle im speicherinternen Spaltenspeicher manuell zu aktualisieren.
SELECT google_columnar_engine_refresh(TABLE_NAME);
TABLE_NAME
: Ein String mit dem Namen der Tabelle oder der materialisierten Ansicht. Wenn sich die Tabelle oder Ansicht in einem anderen Schema als public
befindet, geben Sie den Namen des Schemas im Format SCHEMA_NAME.TABLE_NAME
an, z. B. myschema.mytable
.