2016-07-07 19 views

Antwort

0

Ja. Wenn in einem Intervall eine andere Abfrage auftritt, können QEs wiederverwendet werden. Wenn dieses Intervall überschritten wird, werden die QEs beendet.

+0

Wie lange ist das Intervall standardmäßig eingestellt? Kann dieses Intervall vom Benutzer festgelegt werden? –

0

Darüber hinaus beendet Session-Quit alle gegabelten QEs, unabhängig vom Intervall.

0

Das Intervall GUC ist gp_vmem_idle_resource_timeout, Sie können es in Ihrer Sitzung festlegen.

1

Der Cache von QES in HAWQ ist für zwei Zwecke ausgelegt:

  1. Reuse die QES zwischen aufeinanderfolgenden Abfragen, um sie jedes Mal, wenn wir eine Abfrage ausführen und damit zur Verbesserung der Abfrageleistung zu vermeiden, gabeln, vor allem für kleine Abfrage.

  2. Debug in Feature-Entwicklung und Bugfix.

QES der aktuellen Abfrage freigegeben wird, wenn die aktuelle Sitzung geschlossen wird, oder sie sind nach gp_vmem_idle_resource_timeout ms Leerlauf. Es ist 10 Minuten im Debug-Build und 18 Sekunden in Release-Build standardmäßig. Sie können auf guc.c Details siehe:

{ 
    {"gp_vmem_idle_resource_timeout", PGC_USERSET, CLIENT_CONN_OTHER, 
     gettext_noop("Sets the time a session can be idle (in milliseconds) before we release gangs on the segment DBs to free resources."), 
     gettext_noop("A value of 0 turns off the timeout."), 
     GUC_UNIT_MS | GUC_GPDB_ADDOPT 
    }, 
    &IdleSessionGangTimeout, 

#ifdef USE_ASSERT_CHECKING 
    600000, 0, INT_MAX, NULL, NULL /* 10 minutes by default on debug builds.*/ 
#else 
    18000, 0, INT_MAX, NULL, NULL 
#endif 
} 
2

Ja, HAWQ QE-Prozess in Sitzungsebene gehalten. Wenn Sie eine Abfrage bereits beendet haben, die Sitzung jedoch noch aktiv ist, werden bei der nächsten Abfrage, die Sie über dieselbe Sitzung gesendet haben, die bereits gestarteten QEs erneut verwendet.

Es gibt zwei Phänomene: 1) Die Catched-QE-Prozessnummer ist kleiner als die QEs, die für die neue Abfrage auf demselben Host benötigt werden. In diesem Fall wird HAWQ die abgefangenen QEs wiederverwenden und auch neue QEs für die nicht ausreichende Anzahl starten. 2) Die Catched-QE-Prozessnummer ist mehr als die QEs, die für die neue Abfrage auf demselben Host benötigt werden. In diesem Fall wird HAWQ einige QEs innerhalb dieser QEs auswählen. Sie werden feststellen, dass einige QEs noch inaktiv sind.

Die Anzahl der benötigten QEs wird vom Ressourcenmanager festgelegt.

Wenn Sie den Befehl "SET" ausführen, werden alle QEs wiederverwendet, wenn QEs auf den Segmenthosts abgefangen werden. Wenn jedoch keine QEs abgefangen werden, startet der Befehl "SET" keine QEs im Segment.