Auf dieser Seite wird beschrieben, wie Sie die Aktualität der Daten im Spaltenspeicher der Spalten-Engine in AlloyDB for PostgreSQL aufrechterhalten.
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 und Abfragen werden sowohl mit spaltenorientierten Daten aus dem Spaltenspeicher als auch mit zeilenorientierten Daten aus dem Zeilencache und dem Datenbankspeicher geplant und ausgeführt.
Im Laufe der Zeit werden immer mehr Datenblöcke ungültig. Die Leistungssteigerungen durch die spaltenorientierte Engine werden dann 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 Tabellen und ScaNN-Indizes, die in die Spalten-Engine geladen werden, 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.
Prozentsatz ungültiger Daten prüfen
Wenn Ihre Anwendung Zeilen in einer Tabelle hinzufügt, löscht oder aktualisiert, kennzeichnet die spaltenorientierte Engine die betroffenen Daten im Spaltenspeicher als ungültig. Sie können den Prozentsatz ungültiger Daten für Ihre Tabellen und materialisierten Ansichten abrufen, indem Sie die Ansicht g_columnar_relations
abfragen. So können Sie entscheiden, ob Sie eine manuelle Aktualisierung durchführen oder den Schwellenwert für die automatische Aktualisierung anpassen müssen.
Führen Sie die folgende Abfrage aus, um den Prozentsatz der Ungültigkeit für alle Beziehungen im spaltenorientierten Speicher aufzurufen:
SELECT relation_name, invalid_percentage FROM g_columnar_relations;
Wenn Sie den Prozentsatz der Ungültigmachung für eine bestimmte Tabelle prüfen möchten, fügen Sie der Abfrage eine WHERE
-Anweisung hinzu.
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
Ersetzen Sie TABLE_NAME
durch einen String mit dem Namen der Tabelle oder der materialisierten Ansicht. Wenn sich die Ressource in einem anderen Schema als public
befindet, geben Sie den Namen des Schemas im Format SCHEMA_NAME.TABLE_NAME
an, z. B. myschema.mytable
.
Wenn Sie den Prozentsatz der Ungültigmachung für einen bestimmten Index prüfen möchten, fügen Sie der Abfrage eine WHERE
-Anweisung hinzu.
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
Aktualisierungsgrenzwert der spaltenbasierten Engine ändern
Wenn Sie den Aktualisierungsschwellenwert der spaltenorientierten Engine ändern möchten, müssen Sie den Wert des Datenbank-Flags google_columnar_engine.refresh_threshold_percentage
für Ihre AlloyDB-Instanz ändern.
Console
- Rufen Sie in der Google Cloud Console die Seite Cluster auf.
- Klicken Sie auf den Namen des Clusters, der die Instanz enthält, die Sie konfigurieren möchten.
- Suchen Sie im Abschnitt Instanzen in Ihrem Cluster nach der Instanz und klicken Sie auf Bearbeiten.
- Fügen Sie im Bereich Flags entweder ein neues Flag hinzu oder ändern Sie das vorhandene Flag
google_columnar_engine.refresh_threshold_percentage
. - Legen Sie den Wert auf eine ganze Zahl zwischen
1
und100
fest. Dieser Wert gibt den Prozentsatz ungültiger Daten an, der eine Aktualisierung auslöst. - Klicken Sie auf Fertig.
gcloud
Wenn Sie die gcloud CLI verwenden möchten, können Sie die Google Cloud CLI installieren und initialisieren oder Cloud Shell verwenden.
Führen Sie den folgenden Befehl aus, um den Aktualisierungsschwellenwert der spaltenorientierten Engine zu ändern:gcloud alloydb instances update INSTANCE_ID \ --database-flags=google_columnar_engine.refresh_threshold_percentage=THRESHOLD \ --cluster=CLUSTER_ID \ --region=REGION_ID \ --project=PROJECT_ID
Ersetzen Sie Folgendes:
- INSTANCE_ID: Die ID der Instanz
- THRESHOLD: Ein Ganzzahlwert zwischen
1
und100
. 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. - CLUSTER_ID: die ID des Clusters, in dem sich die Instanz befindet.
- REGION_ID: Die Region des Clusters.
- PROJECT_ID: die ID des Projekts.
Tabellen und ScaNN-Indizes im Spaltenspeicher manuell aktualisieren
Sie können Tabellen und ScaNN-Indizes in der spaltenorientierten Engine jederzeit manuell aktualisieren. Dazu verwenden Sie spezielle SQL-Funktionen.
Wenn Sie die Daten einer Tabelle in der spaltenorientierten Engine aktualisieren möchten, führen Sie die Funktion google_columnar_engine_refresh
aus.
SELECT google_columnar_engine_refresh(TABLE_NAME);
Ersetzen Sie TABLE_NAME
durch einen String mit dem Namen der Tabelle oder der materialisierten Ansicht. Wenn sich die Ressource in einem anderen Schema als public
befindet, geben Sie den Namen des Schemas im Format SCHEMA_NAME.TABLE_NAME
an, z. B. myschema.mytable
.
Wenn Sie einen ScaNN-Index in der Spalten-Engine manuell aktualisieren möchten, führen Sie die Funktion google_columnar_engine_refresh_index
aus.
SELECT google_columnar_engine_refresh_index(index => INDEX_NAME);
Ersetzen Sie INDEX_NAME
durch einen String mit dem Namen des ScaNN-Index, der aktualisiert werden soll.