2017-12-04 1 views
0

Wir arbeiten mit einer Vertica 8.1-Tabelle mit 500 Spalten und 100 000 Zeilen.Beeinträchtigt die Anzahl der Spalten in einer Vertica-Tabelle die Abfrageleistung?

Die folgende Abfrage wird etwa 1,5 Sekunden in Anspruch nehmen, auch auszuführen, wenn die VSQL Client direkt auf einem des Vertica Clusterknoten mit (jedes Netzwerk-Latenz Problem zu beseitigen):

SELECT COUNT(*) FROM MY_TABLE WHERE COL_132 IS NOT NULL and COL_26 = 'anotherValue'

Aber bei der Überprüfung Die Tabelle query_requests, request_duration_ms, beträgt nur 98 ms, und die Tabelle resource_acquisitions zeigt keine Verzögerung bei der Ressourcenübernahme an. Ich kann nicht verstehen, wo der Rest der Zeit verbracht wird.

Wenn ich dann in eine neue Tabelle nur die von der Abfrage verwendeten Spalten exportieren und die Abfrage für diese neue, kleinere Tabelle ausführen, bekomme ich eine flammende schnelle Antwort, obwohl die Tabelle query_requests immer noch die request_duration_ms angibt etwa 98 ms.

So scheint es, dass die Anzahl der Spalten in der Tabelle die Ausführungszeit von Abfragen beeinflusst, auch wenn die meisten dieser Spalten nicht referenziert sind. Liege ich falsch ? Wenn ja, warum ist es so?

Dank durch Voraus

+1

Wie ist Ihre 500-Spalten-Tabelle sortiert? Und was ist mit der 2-Säulen-Version? Kannst du bitte die Pläne erklären? – mauro

Antwort

0

Es klingt wie Ihre Abfrage für die (Standard) superprojection ausgeführt wird, die alle Tabellen enthält. Obwohl es sich bei Vertica um eine spaltenbezogene Datenbank (mit zugehöriger Komprimierung und Codierung) handelt, berührt Ihre Abfrage wahrscheinlich noch mehr Daten als erforderlich.

Sie können projections erstellen, um Ihre Abfragen zu optimieren. Eine Projektion enthält eine Teilmenge von Spalten; Wenn einer verfügbar ist, der alle Spalten enthält, die Ihre Abfrage benötigt, verwendet die Abfrage diesen anstelle der Superprojektion. (Es ist a little more complicated als das, weil physischer Standort auch ein Faktor ist, aber das ist die Grundidee.) Sie können die Database Designer verwenden, um einige anfängliche Projektionen basierend auf Ihrem Schema und Beispielabfragen zu erstellen und es im Laufe der Zeit zu verbessern.

+0

Vielen Dank für Ihre Antwort. Ich wollte diesen Weg nicht gehen, weil die Tabellenstruktur automatisch generiert, aktualisiert und gefüllt wird und ich keine Kontrolle über die Abfragen habe, die dagegen ausgeführt werden, aber ich denke, ich muss die manuelle Erstellung von Projektionen einplanen. –

0

Ich habe Vertica 8.1.0-1 ausgeführt, es scheint, das Problem war ein Vertica-Fehler in der Planungsphase von Vertica, der eine Leistungsverschlechterung verursachte. - Optimierung - [https://my.vertica.com/docs/ReleaseNotes/8.1.x/Vertica_8.1.x_Release_Notes.htm]

VER-53602 Diese Fix komplexe Abfrageleistung bei der Abfrage Planungsphase verbessert: Es wurde in den Versionen> = 8.1.1 gelöst.

Verwandte Themen