Fehlerbehebung bei der spaltenbasierten Engine

Auf dieser Seite finden Sie empfohlene Lösungen und Informationen zu häufigen Problemen und Fragen im Zusammenhang mit der spaltenorientierten AlloyDB for PostgreSQL-Engine.

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

Beschreibung: Wenn Sie die spaltenbasierte Engine verwenden möchten, 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 spaltenorientierten Engine vorhanden ist, wird das Abfragefragment standardmäßig im zeilenbasierten Speicher abgelegt.

Ein Abfragefragment in diesem Kontext ist eine Abfrage, die mehrere Scan-Knoten haben kann. Das Abfragefragment kann beispielsweise zwei Scan-Knoten für einen Join enthalten. Ein Scan-Knoten verwendet möglicherweise ein nicht spaltenbasiertes Format und ein anderer Scan-Knoten ein spaltenbasiertes Format. Alle Spalten eines Scan-Knotens – Filterspalten und Projektionsspalten – müssen spaltenweise ausgefüllt werden. Ebenso kann eine Abfrage einige Partitionen im spaltenbasierten und andere im nicht spaltenbasierten Format enthalten.

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

  1. Unterstützte Datentypen prüfen

    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, wenden Sie sich an Cloud Customer Care.

  2. Unterstützte Operatoren prüfen

    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 spaltenbasierten 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 identifizieren und zu beheben, die verhindern, dass bestimmte Abfragen die spaltenorientierte Engine verwenden:

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

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

Beschreibung: Sie möchten Tabellen in der spaltenbasierten Engine hinzufügen oder löschen.

Empfohlene Lösung: Überprü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.

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

Beschreibung: Es treten Leistungs- oder Datenverarbeitungsprobleme auf, wenn die Größe Ihrer spaltenorientierten Daten den für die spaltenorientierte Engine zugewiesenen Arbeitsspeicher überschreitet.

Empfohlene Lösung: Verwenden Sie für eine optimale Leistung die Empfehlungsfunktion in AlloyDB, um die optimalen Tabellen und Spalten zum Befüllen der spaltenbasierten Engine zu ermitteln.

Wenn die empfohlenen Tabellen und Spalten den physischen Speicher der spaltenbasierten Engine überschreiten, wird für die überschüssigen spaltenbasierten Daten ein Teil der ultraschnellen Cache-Ebene verwendet. Bei Abfragen der verbleibenden Daten in der Tabelle, die sich nicht in der spaltenbasierten Engine befinden, wird der Zeilenspeicher transparent verwendet.

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