Spalten-Engine von AlloyDB

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.
  • Aggregationsfunktionen

    • Es werden nur die folgenden Ausdrücke verwendet: SUM, MIN, MAX, AVG und COUNT.
    • Sie befinden sich am Anfang der Abfrage eines spaltenbasierten Scans.
    • Sie sind nicht gruppiert oder nach Spalten gruppiert.
  • ORDER-BY und SORT: nur, wenn das ORDER-BY oder SORT 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 allen SORT- oder GROUP 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:

  1. Aktivieren Sie die Engine auf der Instanz.

    Das Aktivieren des Engines ist ein einmaliger Vorgang und erfordert einen Neustart.

  2. Fügen Sie dem Spaltenspeicher Spalten hinzu.

    Sie haben folgende Möglichkeiten, dem Spaltenspeicher Spalten hinzuzufügen:

  3. 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 Anweisung EXPLAIN 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 und total_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ür invalid_block_count hoch.

Nächste Schritte