众所周知,如果查询要求资源管理器获取资源但无法获得足够的资源(低于最小数量的vsegs),它仍会在下一轮中询问资源。例如,如果查询第一次询问1000个vsegs,但它只获得20个vsegs。由于查询可以运行的最小数量的vsegs是100,它下次会询问80个vsegs并始终保持20个vsegs吗?
答案 0 :(得分:1)
不,HAWQ中的会话不会保留资源。 当没有足够的vsegs时,查询将挂起以等待资源到达,超时后查询将失败。
答案 1 :(得分:0)
我猜hawq将保留20个资源槽并继续请求80个资源槽。但这会导致饥饿。资源管理器应该能够检测到这一点。
答案 2 :(得分:0)
是的,休伯特是对的。 当Query调度程序需要来自资源管理器的资源(简称为RM)时,它将识别min_segment_count(简称为N1)和max_segment_count(简称为N2),这意味着如果RM具有足够的N2可用虚拟段,则它可以返回N2虚拟段。但是,如果RM没有N2可用的虚拟段,但是具有> = N1个可用段,则它可以返回可用的虚拟段。如果其可用的段号小于N1,则请求将挂起。
短期内, 请求(N1,N2)和RM判断可用的虚拟段号N
{
如果N> = N2则返回N2;
否则,如果N> = N1,则返回N1;
否则挂起,直到有足够的资源。
}
答案 3 :(得分:0)
但是如果query1和query2在不同的资源队列中,则由资源队列的比例决定。