Sie können dem Spaltenspeicher manuell Tabellen, materialisierte Ansichten, Spalten und Vektorindexe hinzufügen, um zu steuern, welche Daten von der spaltenbasierten Engine beschleunigt werden. Verwenden Sie die manuelle Verwaltung, wenn Sie eine detaillierte Kontrolle über den Inhalt des Spaltenspeichers benötigen, anstatt sich auf die automatische Spaltenformatierung zu verlassen, um Spalten automatisch zu verwalten.
Tabellen, materialisierte Ansichten und Vektorindexe verwalten
Je nach Arbeitslast können Sie dem Spaltenspeicher manuell Spalten hinzufügen oder einige oder alle Spalten einer Tabelle oder einer materialisierten Ansicht daraus entfernen. Bei der Abfrageauswertung werden automatisch die gespeicherten spaltenbasierten Daten verwendet, um Abfragen zu beantworten.
Ebenso können Sie der spaltenbasierten Engine manuell HNSW- oder ScaNN-Vektorindizes hinzufügen, um die Vektorsuche zu beschleunigen. Die Beschleunigung der spaltenorientierten Engine für HNSW-Indizes ist allgemein verfügbar (GA), während die Beschleunigung für ScaNN-Indizes in der Vorabversion verfügbar ist. Dies ermöglicht eine effiziente Suche nach dem nächsten Nachbarn in großen Datasets mit Vektoreinbettungen.
Berücksichtigen Sie bei der Auswahl der Tabellen, materialisierten Ansichten und Spalten, die dem Spaltenspeicher hinzugefügt werden sollen, sowohl die Größe des Spaltenspeichers als auch die Art der Arbeitslast. Gute Kandidaten für die Auswahl sind große Tabellen oder Ansichten, die häufig gescannt werden. Suchen Sie in diesen Tabellen oder Ansichten nach großen, nicht eindeutigen Indexen, die von der OLAP-Arbeitslast verwendet werden. Sie können die Spalten dieser Indexe dem Spaltenspeicher hinzufügen und die Indexe gegebenenfalls löschen. Dadurch entfällt der Leistungsaufwand, der mit der Wartung auf der primären Instanz verbunden ist.
Verwenden Sie eine der folgenden Methoden, um den Inhalt der spaltenorientierten Engine zu verwalten:
- Spaltenspeicherinhalte durch Aktualisieren von Datenbank-Flags verwalten
- Spaltenspeicherinhalte mit SQL-Funktionen verwalten
Unter Welche Daten können dem Spaltenspeicher hinzugefügt werden? finden Sie Informationen zu den Datentypen und Datenquellen, die Sie verwenden können, wenn Sie dem Spaltenspeicher Tabellen, Spalten und materialisierte Ansichten hinzufügen.
Hinweis
- Sie benötigen eine der folgenden IAM-Rollen im Projekt von Google Cloud , das Sie verwenden:
roles/alloydb.admin(die vordefinierte IAM-Rolle „AlloyDB Admin“)roles/owner(einfache IAM-Rolle „Inhaber“)roles/editor(einfache IAM-Rolle „Bearbeiter“)
Wenn Sie keine dieser Rollen haben, wenden Sie sich an den Organisationsadministrator, um Zugriff anzufordern.
Spaltenspeicherinhalte durch Aktualisieren von Datenbank-Flags verwalten
Sie können Spaltenspeicherinhalte manuell verwalten, indem Sie das Datenbank-Flag google_columnar_engine.relations aktualisieren. Das Flag hat einen einzelnen Wert, der alle Datenquellen Ihres Spaltenspeichers angibt. Während des Neustarts werden die in diesem Flag angegebenen Spalten automatisch in den Spaltenspeicher eingefügt.
Sie können dieses Flag zusammen mit der automatischen Spaltenformatierung verwenden. Wenn die spaltenbasierte Engine nach dem Füllen der Spalten, die Sie über das Flag google_columnar_engine.relations angeben, noch Speicherplatz hat, werden bei der automatischen Spaltenformatierung nach Bedarf weitere Spalten zum Spaltenspeicher hinzugefügt.
Weitere Informationen zum Festlegen der Datenbank-Flags einer Instanz mit der Google Cloud CLI oder der Google Cloud Console finden Sie unter Datenbank-Flags einer Instanz konfigurieren.
Spalten mithilfe von Flags hinzufügen
Wenn Sie dem Spaltenspeicher Spalten hinzufügen möchten, definieren Sie das Flag google_columnar_engine.relations einer Instanz. Legen Sie den Wert auf eine durch Kommas getrennte Liste von Elementen fest. Jedes Element gibt eine Liste von Spalten an, die aus einer bestimmten Tabelle aufgenommen werden sollen. Das Format ist:
DATABASE_NAME.SCHEMA_NAME.TABLE_NAME(COLUMN_LIST)
Ersetzen Sie Folgendes:
DATABASE_NAME: Die Datenbank mit den Spalten, die dem Spaltenspeicher hinzugefügt werden sollen.
SCHEMA_NAME: Das Schema, das die Tabellen oder materialisierten Ansichten identifiziert, die dem Spaltenspeicher hinzugefügt werden sollen, z. B.
public.TABLE_NAME: Die Tabelle oder die materialisierte Ansicht mit den Spalten, die dem Spaltenspeicher hinzugefügt werden sollen.
COLUMN_LIST: Eine durch Kommas getrennte Liste der Spalten, die dem Spaltenspeicher hinzugefügt werden sollen.
Wenn Sie alle Spalten einer Tabelle oder materialisierten Ansicht hinzufügen möchten, lassen Sie die Spaltenliste weg.
DATABASE_NAME.SCHEMA_NAME.TABLE_NAME
Weitere Informationen zum Festlegen der Datenbank-Flags für eine Instanz finden Sie unter Datenbank-Flags einer Instanz konfigurieren.
gcloud CLI-Syntax bei Verwendung von google_columnar_engine.relations
Wenn Sie die Google Cloud CLI verwenden, um das Flag google_columnar_engine.relations festzulegen, müssen Sie die alternative Trennzeichen-Syntax verwenden, um die von Ihnen festgelegten Datenbank-Flags zu trennen. Das liegt daran, dass die Spaltenliste kommagetrennt ist. Sie müssen daher ein anderes Zeichen als ein Komma verwenden, wenn Sie Flags innerhalb desselben Befehlszeilenarguments angeben.
Im folgenden Beispiel wird gezeigt, wie Sie mit der gcloud CLI dem Spaltenspeicher zwei Spalten im Schema public hinzufügen. Im Beispiel wird ein separates Flag festgelegt, um die spaltenorientierte Engine zu aktivieren. Wenn Sie den Befehl gcloud alloydb instances update verwenden, um ein Datenbank-Flag festzulegen, müssen Sie auch alle anderen Datenbank-Flags festlegen, die nicht standardmäßige Werte haben sollen, auch wenn sie bereits festgelegt sind.
gcloud alloydb instances update INSTANCE_NAME \
--database-flags=^:^\
google_columnar_engine.relations='DATABASE_NAME.public.TABLE_NAME(COLUMN_1,COLUMN_2)'\
:google_columnar_engine.enabled=on\
[:FLAG_3=VALUE_3 ...] \
--region=REGION_ID \
--cluster=CLUSTER_IDErsetzen Sie Folgendes:
INSTANCE_NAME: der Name der Instanz.DATABASE_NAME: Die Datenbank mit den Spalten, die dem Spaltenspeicher hinzugefügt werden sollen.TABLE_NAME: der Name der Tabelle oder der materialisierten Ansicht.COLUMN_1, COLUMN_2: Die Spalten, die dem Spaltenspeicher hinzugefügt werden sollen.REGION_ID: die Region Ihrer Instanz.CLUSTER_ID: die Cluster-ID.
Spalten mithilfe von Flags löschen
Wenn Sie Spalten aus dem Spaltenspeicher entfernen möchten, legen Sie einen neuen Wert für das Flag google_columnar_engine.relations fest, das im vorherigen Abschnitt beschrieben wird. Lassen Sie dabei die Spalten aus, die Sie entfernen möchten.
Wenn Sie alle Spalten aus dem Spaltenspeicher entfernen möchten, deaktivieren Sie das Flag google_columnar_engine.relations für Ihre Instanz.
Weitere Informationen zum Festlegen von Datenbank-Flags für eine Instanz finden Sie unter Datenbank-Flags einer Instanz konfigurieren.
Spaltenspeicherinhalte mit SQL-Funktionen verwalten
Sie können Spaltenspeicherinhalte manuell mit SQL-Funktionen verwalten.
Speicherplatzbedarf für Spaltenspeicher schätzen
Führen Sie die SQL-Funktion google_columnar_engine_estimate aus, um den Gesamtspeicherplatz zu schätzen, der für eine Relation in der spaltenbasierten Engine erforderlich ist.
psql-Client
SELECT google_columnar_engine_estimate(
relation => 'TABLE_NAME',
columns => 'COLUMN_LIST'
);
Ersetzen Sie Folgendes:
-
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, einen Punkt und den Namen der Tabelle oder Ansicht an, z. B.'myschema.mytable'. -
COLUMN_LIST: Ein String mit einer kommagetrennten, Groß-/Kleinschreibung beachtenden Liste der Namen der Spalten, die Sie hinzufügen möchten. Wenn Sie alle Spalten der Tabelle oder der materialisierten Ansicht dem Spaltenspeicher hinzufügen möchten, lassen Sie diesen Parameter weg.
Spalten mit SQL-Funktionen hinzufügen
Führen Sie die SQL-Funktion google_columnar_engine_add aus, um dem Spaltenspeicher Spalten hinzuzufügen.
Mit dieser Methode werden die angegebenen Spalten dem Spaltenspeicher hinzugefügt und nur im verbundenen Knoten verwaltet. Die neuen Spalten bleiben im Speicher nicht über Instanzneustarts hinweg erhalten.
Diese Methode ändert das Datenbank-Flag google_columnar_engine.relations nicht. Bei der automatischen Spaltenformatierung werden Spalten, die mit dieser SQL-Funktion hinzugefügt wurden, nicht berücksichtigt.
psql-Client
SELECT google_columnar_engine_add(
relation => 'TABLE_NAME',
columns => 'COLUMN_LIST'
);
Ersetzen Sie Folgendes:
TABLE_NAME: Ein String mit dem Namen der Tabelle oder der materialisierten Ansicht. Wenn sich die Tabelle oder Ansicht in einem anderen Schema alspublicbefindet, geben Sie den Namen des Schemas, einen Punkt und den Namen der Tabelle oder Ansicht an, z. B.'myschema.mytable'.COLUMN_LIST: Ein String mit einer kommagetrennten, wobei die Groß-/Kleinschreibung beachtet wird, Liste der Namen der Spalten, die Sie hinzufügen möchten. Wenn Sie alle Spalten der Tabelle oder der materialisierten Ansicht dem Spaltenspeicher hinzufügen möchten, lassen Sie diesen Parameter weg.
Spalten mit SQL-Funktionen löschen
Führen Sie die SQL-Funktion google_columnar_engine_drop so aus:
psql-Client
SELECT google_columnar_engine_drop(
relation => 'TABLE_NAME',
columns => 'COLUMN_LIST'
);
Ersetzen Sie Folgendes:
TABLE_NAME: Ein String mit dem Namen der Tabelle oder der materialisierten Ansicht. Wenn sich die Tabelle oder Ansicht in einem anderen Schema alspublicbefindet, geben Sie den Namen des Schemas, einen Punkt und den Namen der Tabelle oder Ansicht an, z. B.'myschema.mytable'.COLUMN_LIST: ein String mit einer kommagetrennten, bei dem die Groß-/Kleinschreibung beachtet wird, Liste der Namen der Spalten, die Sie löschen möchten. Wenn Sie alle Spalten der Tabelle oder der materialisierten Ansicht aus dem Spaltenspeicher entfernen möchten, lassen Sie diesen Parameter weg.
Mit der Funktion google_columnar_engine_drop können Sie Spalten entfernen, die durch Bearbeiten des Datenbank-Flags google_columnar_engine.relations hinzugefügt wurden. Wenn Sie das tun, werden diese Spalten jedoch wieder dem spaltenbasierten Speicher hinzugefügt, wenn die Instanz neu gestartet wird.
Vektorindexe in der spaltenbasierten Engine verwalten
Um die Vektorsuche zu beschleunigen, können Sie Vektorindexe in den Index-Cache der spaltenbasierten Engine laden. Die Beschleunigung der spaltenorientierten Engine für HNSW-Indizes ist allgemein verfügbar (GA), während die Beschleunigung für ScaNN-Indizes in der Vorabversion verfügbar ist.
Vektorindexe mit SQL-Funktionen hinzufügen, entfernen und prüfen
Sie können Vektorindexe manuell mit SQL-Funktionen zum Index-Cache hinzufügen, daraus entfernen und prüfen. Wenn Sie dem Cache einen Index hinzufügen, können Vektorsuchanfragen beschleunigt werden.
Vektorindex hinzufügen
Verwenden Sie die folgende SQL-Funktion, um dem Index-Cache der spaltenbasierten Engine einen bestimmten Index hinzuzufügen:
SELECT google_columnar_engine_add_index(index => 'INDEX_NAME');
Ersetzen Sie INDEX_NAME durch den Namen des HNSW- oder ScaNN-Vektorindex, den Sie dem Index-Cache der spaltenorientierten Engine hinzufügen möchten.
Vektorindex entfernen
Verwenden Sie die folgende SQL-Funktion, um einen bestimmten Vektorindex aus der spaltenbasierten Engine zu löschen:
SELECT google_columnar_engine_drop_index(index => 'INDEX_NAME');
Ersetzen Sie INDEX_NAME durch den Namen des Vektorindex, den Sie entfernen möchten.
Nutzung der spaltenbasierten Engine prüfen
Wenn Sie prüfen möchten, ob Ihre Vektorindexscans die spaltenorientierte Engine verwenden, führen Sie den Befehl EXPLAIN ANALYZE mit der Option COLUMNAR_ENGINE aus:
EXPLAIN (ANALYZE TRUE, SCANN TRUE, COSTS FALSE, TIMING FALSE, SUMMARY FALSE, VERBOSE FALSE, COLUMNAR_ENGINE TRUE)
SELECT * FROM t ORDER BY val <=> '[0.5,0.5,0.5,0.5]' LIMIT 100;
Der Befehl gibt einen Abfrageplan ähnlich dem folgenden zurück:
Index Scan using t_ix3 on t t_1 (actual rows=100 loops=1)
Order By: (val <=> '[0.5,0.5,0.5,0.5]'::vector)
Limit: 100
ScaNN Info: (... columnar engine nodes hit=6...)
Columnar Engine ScaNN Info: (index found=true)
Wenn columnar engine nodes hit und Columnar Engine ScaNN Info: (index found=true) in der Ausgabe vorhanden sind, wird die spaltenbasierte Engine für die Abfrage verwendet.
Nächste Schritte
- Abfragen mit virtuellen Spalten für Ausdrücke optimieren
- Vektorsuche mit der spaltenbasierten Engine beschleunigen