Auf dieser Seite finden Sie einen Überblick über die spaltenorientierte Datenbank, die AlloyDB for PostgreSQL bietet, und eine Anleitung zur Verwendung.
Die spaltenbasierte AlloyDB-Engine beschleunigt die Verarbeitung von SQL-Abfrage für Scans, Joins und Aggregate mithilfe der folgenden Komponenten:
Ein Spaltenspeicher, der Tabellen- und Materialisierte-Ansichtsdaten für ausgewählte Spalten enthält, die in einem spaltenorientierten Format neu angeordnet wurden.
Ein spaltenorientierter Abfrageplaner und eine Ausführungs-Engine, die die Verwendung des Spaltenspeichers in Abfragen unterstützen.
Die spaltenorientierte Engine kann auf der primären Instanz, einer Lesepoolinstanz oder auf beiden verwendet werden. Sie können auch die automatische Spaltenformatierung verwenden, um Ihre Arbeitslast zu analysieren und den Spaltenspeicher automatisch mit den Spalten zu füllen, die den größten Leistungsgewinn bieten.
Wenn Sie die spaltenorientierte Engine mit einer bestimmten Abfrage verwenden möchten, müssen sich alle Spalten in diesen Abfragefragmenten, z. B. Joins und Scans, im Spaltenspeicher befinden.
Standardmäßig ist die spaltenorientierte Engine so konfiguriert, dass sie 30% des Arbeitsspeichers der Instanz nutzt. Je nach Arbeitslast, Arbeitsspeichernutzung und Konfiguration des Lesepools können Sie die Arbeitsspeicherzuweisung der spaltenorientierten Engine für die primäre Instanz reduzieren und der Lesepoolinstanz mehr Arbeitsspeicher zuweisen. Informationen zum Ansehen und Überwachen der Arbeitsspeichernutzung durch die spaltenorientierte Engine finden Sie unter Speichernutzung des Spaltenspeichers ansehen. Informationen zum Ändern der vom Spaltenspeicher verwendeten Speichergröße finden Sie unter Größe des Spaltenspeichers konfigurieren. Informationen zur empfohlenen Arbeitsspeichergröße für die spaltenbasierte Engine Ihrer Instanz finden Sie unter Empfohlene Arbeitsspeichergröße für den Spaltenspeicher.
Abfragetypen, die von der spaltenbasierten Engine profitieren
Bestimmte Abfragen können von der spaltenbasierten Engine profitieren. Im Folgenden finden Sie eine Liste von Vorgängen und Abfragemustern, die von der spaltenorientierten Engine am meisten profitieren:
Tabellenscans
- Es gibt selektive Filter wie
WHERE
-Klauseln. - Es werden nur wenige Spalten aus einer größeren Tabelle oder materialisierten Ansicht verwendet.
- Dabei werden Ausdrücke wie
LIKE
,SUBSTR
oder TRIM verwendet.
- Es gibt selektive Filter wie
Aggregationsfunktionen
- Es werden nur die folgenden Ausdrücke verwendet:
SUM
,MIN
,MAX
,AVG
undCOUNT
. - Sie befinden sich am Anfang der Abfrage eines spaltenbasierten Scans.
- Sie sind nicht gruppiert oder nach Spalten gruppiert.
- Es werden nur die folgenden Ausdrücke verwendet:
ORDER-BY
undSORT
: nur, wenn dasORDER-BY
oderSORT
in den Scanergebnissen von Spalten enthalten ist, auf die über die spaltenorientierte Engine zugegriffen wird.LIMIT
: Nur, wenn der Operator am Anfang der Abfrage eines spaltenbasierten Scans steht und vor allenSORT
- oderGROUP BY
-Operatoren steht.INNER HASH JOIN
, nur wenn die verwendeten Schlüssel Spalten sind und keine Zusammenführungsqualifizierer verwendet werden.Selektive Joins, nur wenn die Joins am Anfang der Abfrage eines spaltenbasierten Scans stehen.
Weitere Informationen dazu, welche Abfragen am besten mit der spaltenorientierten Engine funktionieren, ob die spaltenorientierte Engine für eine Abfrage verwendet wurde und wie sie verwendet wurde, finden Sie unter Verwendung der spaltenorientierten Engine mit EXPLAIN
prüfen.
Spaltenorientierte Engine verwenden
So verwenden Sie die spaltenorientierte Engine in einer AlloyDB-Instanz:
Aktivieren Sie die Engine auf der Instanz.
Das Aktivieren des Engines ist ein einmaliger Vorgang und erfordert einen Neustart.
Fügen Sie dem Spaltenspeicher Spalten hinzu.
Sie haben folgende Möglichkeiten, dem Spaltenspeicher Spalten hinzuzufügen:
Verwenden Sie die automatische Spaltenstrukturierung, um Ihre Arbeitslast zu analysieren und automatisch Spalten hinzuzufügen.
Fügen Sie die Spalten manuell hinzu, basierend auf Ihren Kenntnissen der Arbeitslast auf den Datenbanken in der Instanz.
Mit der Ansicht
g_columnar_relations
können Sie nachverfolgen, was sich im Spaltenspeicher befindet. Nachdem Spalten hinzugefügt wurden, können Sie mit der AnweisungEXPLAIN
die Verwendung der spaltenorientierten Engine in SQL-Abfragen prüfen.
Eine ausführliche Anleitung zur Verwendung der spaltenorientierten Engine finden Sie unter Spaltenorientierte Engine konfigurieren.
Welche Daten Sie dem Spaltenspeicher hinzufügen können
Es gibt einige Einschränkungen für die Datentypen und Datenquellen, die Sie verwenden können, wenn Sie dem Tabellenspeicher Spalten hinzufügen.
Unterstützte Datentypen
Die spaltenorientierte Engine unterstützt nur Spalten mit den folgenden vordefinierten Datentypen:
array
bigint
boolean
bytea
char
date
decimal
double precision
enum
float4
float8
integer
json
jsonb
numeric
real
serial
short
smallint
text
timestamp
timestamptz
uuid
varchar
Die spaltenorientierte Engine ignoriert alle Versuche, dem Spaltenspeicher manuell Spalten mit nicht unterstützten Datentypen hinzuzufügen.
Nicht unterstützte Datenquellen
Die spaltenorientierte Engine unterstützt keine Tabellen oder materialisierten Ansichten mit den folgenden Attributen als Datenquellen:
Nicht untergeordnete partitionierte Tabellen
Fremde Tabellen
Tabellen oder Ansichten mit weniger als 5.000 Zeilen
Einschränkungen der spaltenbasierten Engine
- Wenn Sie eine Analyseabfrage für eine Spalte mit Index ausführen, verwendet der AlloyDB-Optimierungstool möglicherweise den Zeilenspeicher.
- Manuell dem Spaltenspeicher hinzugefügte Spalten werden nicht automatisch entfernt. Wenn Sie manuell hinzugefügte Spalten erzwingen möchten, verwenden Sie
google_columnar_engine_drop()
in Ihrer Instanz. - Bei der automatischen Spaltenstruktur werden je nach Abfragenutzung möglicherweise automatisch Spalten hinzugefügt und entfernt.
- Nicht alle Datentypen werden von der spaltenorientierten Engine unterstützt. Informationen zu den unterstützten Datentypen finden Sie unter Unterstützte Datentypen.
Häufige Aktualisierungen von Zeilen machen spaltenbasierte Daten ungültig. Wenn Sie eine Tabelle oder eine materialisierte Ansicht im kollaborativen Speicher validieren möchten, können Sie entweder die Aktualisierungshäufigkeit verringern oder die Aktualisierungen der kollaborativen Engine häufiger planen.
Sie können die Spalten
invalid_block_count
undtotal_block_count
in g_columnar_relations vergleichen, um zu prüfen, ob Ihre Tabelle oder Ansicht betroffen ist. Wenn Änderungen an Ihrer Tabelle oder Ansicht häufig oder in großer Menge auftreten, ist der Wert fürinvalid_block_count
hoch.