Fehlerbehebung bei der spaltenbasierten Engine

Auf dieser Seite finden Sie empfohlene Korrekturen und Informationen zu häufigen Problemen und Fragen zum spaltenorientierten Modul von AlloyDB for PostgreSQL.

Sie haben der spaltenorientierten Engine referenzierte Spalten hinzugefügt, aber Ihre SELECT-Abfrage verwendet sie nicht.

Beschreibung:Damit die spaltenorientierte Engine verwendet werden kann, müssen alle Spalten, auf die in einem Abfragefragment verwiesen wird, z. B. Joins und Scans, im Spaltenspeicher vorhanden sein. Wenn eine referenzierte Spalte nicht in der spaltenbasierten Engine vorhanden ist, wird für das Abfragefragment standardmäßig der zeilenbasierte Speicher verwendet.

Ein Abfragefragment ist in diesem Zusammenhang eine Abfrage, die mehrere Scanknoten haben kann. Das Abfragefragment kann beispielsweise zwei Scan-Knoten für einen Join haben. Ein Scan-Knoten verwendet möglicherweise nicht spaltenorientiert und ein anderer Scan-Knoten spaltenorientiert. Alle Spalten eines Scan-Knotens (Filter- und Projektionsspalten) müssen spaltenweise ausgefüllt werden. Ebenso kann eine Abfrage einige Partitionen in spaltenorientierter und andere Partitionen in nicht spaltenorientierter Form haben.

Empfohlene Lösung:So prüfen Sie, ob alle referenzierten Spalten in der spaltenorientierten Engine vorhanden sind:

  1. Prüfen Sie, ob die Datentypen unterstützt werden.

    Prüfen Sie, ob AlloyDB alle Datentypen der Spalten unterstützt, die Sie mit der spaltenbasierten Engine verwenden möchten. Weitere Informationen finden Sie unter Unterstützte Datentypen. Wenn AlloyDB einen wichtigen Datentyp nicht unterstützt, sollten Sie sich an den Google Cloud-Support wenden.

  2. Unterstützte Operatoren

    Prüfen Sie, ob AlloyDB die Operatoren für die Datentypen in der spaltenbasierten Engine unterstützt. Weitere Informationen zu unterstützten Operatoren finden Sie unter Abfragetypen, die von der spaltenorientierten Engine profitieren.

  3. Führen Sie den Befehl EXPLAIN COLUMNAR_ENGINE aus:

    Führen Sie den folgenden EXPLAIN COLUMNAR_ENGINE-Befehl aus, um Probleme zu ermitteln und zu beheben, die verhindern, dass für bestimmte Abfragen die spaltenorientierte Engine verwendet wird:

    EXPLAIN (COLUMNAR_ENGINE, ANALYZE) SELECT column1, column2 FROM my_table WHERE column3 > 100;
    

Sie können in der spaltenorientierten Engine keine Tabellen hinzufügen oder löschen.

Beschreibung:Sie möchten Tabellen in der spaltenorientierten Engine hinzufügen oder entfernen.

Empfohlene Lösung:Prüfen Sie Ihre Nutzerberechtigungen. Sie können Tabellen in der spaltenorientierten Engine nur hinzufügen oder löschen, wenn Sie Leseberechtigungen für die Tabelle haben.

Die Größe der spaltenbasierten Daten überschreitet den zugewiesenen Arbeitsspeicher.

Beschreibung:Es treten Probleme mit der Leistung oder der Datenverarbeitung auf, wenn die Größe Ihrer spaltenbasierten Daten den für die spaltenbasierte Engine zugewiesenen Arbeitsspeicher überschreitet.

Empfohlene Korrektur:Verwenden Sie für eine optimale Leistung die Empfehlungsfunktion in AlloyDB, um optimale Tabellen und Spalten zum Füllen der spaltenorientierten Engine zu ermitteln.

Wenn die empfohlenen Tabellen und Spalten den physischen Speicher der spaltenbasierten Engine überschreiten, wird für die zusätzlichen spaltenbasierten Daten ein Teil der ultraschnellen Cache-Ebene verwendet. Abfragen für die verbleibenden Daten in der Tabelle, die nicht in der spaltenbasierten Engine enthalten sind, verwenden transparent den Zeilenspeicher.

Sie können auch die Zuweisung von Arbeitsspeicher und Speichercache für die spaltenorientierte Engine anpassen. Für die spaltenbasierte Engine wird eine Standardgröße für den Arbeitsspeicher und den Speichercache bereitgestellt. Sie können den Arbeitsspeicher und den Speichercache manuell konfigurieren. Informationen zum Ändern der Menge an Arbeitsspeicher oder Speicher-Cache, die der spaltenbasierten Engine zugewiesen ist, finden Sie unter Arbeitsspeicher für die spaltenbasierte Engine konfigurieren.