2017-05-16 1 views
1

Ich habe versucht, die Leistung von Abfragen, die auf einem Vertica-Cluster ausgeführt werden, zu optimieren, indem Sie den Wert von PlannedConcurrency des allgemeinen Ressourcenpools ändern. Wir haben einen Cluster von 4 Knoten mit 32 Kernen/Knoten. Nach Vertica docs,Vertica PlannedConcurrency

Abfrage Budget = Queuing Schwelle des GENERAL pool/PLANNEDCONCURRENCY

Erhöhung PlannedConcurrency die Abfrage Budget reduzieren soll, weniger Speicher/Abfrage der Reservierung, die zu weniger Anfragen führen könnte in der Warteschlange oben.
Das Erhöhen des Werts von PlannedConcurrency scheint die Abfrageleistung zu verbessern.

PlannedConcurrency = 256 ergibt eine bessere Leistung als 128, die besser als AUTO ist.

PlannedConcurrency ist die bevorzugte Anzahl gleichzeitig ausgeführter Abfragen im Ressourcenpool. Wie kann diese Anzahl größer als die Anzahl der Kerne sein und dennoch eine bessere Abfrageleistung bieten?

Auch der Unterschied zwischen RESOURCE_ACQUISITIONS.MEMORY_INUSE_KB und QUERY_PROFILES.RESERVED_EXTRA_MEMORY sollte den verwendeten Speicher geben.
Diese Zahl bleibt jedoch für eine einzelne Abfrage nicht konstant, wenn die geplante Parallelität geändert wird.
Kann mir bitte jemand helfen, zu verstehen, warum sich diese Speicherbelegung mit dem Wert von PlannedConcurrency unterscheidet?

Danke!

Referenzen:
https://my.vertica.com/blog/do-you-need-to-put-your-query-on-a-budgetba-p236830/
https://my.vertica.com/docs/7.1.x/HTML/Content/Authoring/AdministratorsGuide/ResourceManager/GuidelinesForSettingPoolParameters.htm

Antwort

0

Es ist schwer, eine genaue Antwort, ohne die tatsächlichen Anfragen zu geben. Im Allgemeinen bedeutet das Erhöhen der geplanten Parallelität, dass Sie weniger Ressourcen pro Abfrage reservieren und zuweisen und mehr Parallelität zulassen.

Wenn Ihr Anwendungsfall viele kleine Abfragen enthält, die nicht viele Ressourcen benötigen, kann dies die Situation verbessern.

auch bedenken, dass die CPU nicht die einzige Ressource verwendet wird - Sie IO warten müssen (Festplatten, Netzwerk usw.) dies ist Zeit, die Sie besser auf Lauf mehr Anfragen verbringen ...

+0

Wie Kann ich die tatsächliche Speichernutzung für eine Abfrage kennenlernen? @cohenjo – singsuyash

+0

Der Anwendungsfall umfasst meist große Abfragen mit Joins in mehreren (mindestens 2-3) Tabellen. –

+0

@singsuyash - Wie in der Frage angegeben, zeigt der Unterschied zwischen der Akquisition und extra Speicher, was verwendet wird. BhaviJagwani - was sind die reserved_extra_memory Werte? Sie sollten sie verkleinern sehen, wenn Sie die Nebenläufigkeit erhöhen. (groß/klein sind relative Ausdrücke - wenn Sie zusätzliche Ressourcen dann für Ihren Cluster haben, sind dies keine großen Anfragen :)) – cohenjo