正如我们所知,如果查询要求资源管理器获取资源,但无法获得足够的资源(低于vsegs的最小数量),它仍然会在下一轮中请求资源。例如,如果一个查询第一次询问1000个vseg,但只得到20个vseg。由于查询可以运行的vsegs的最小数量是100,它下次会询问80个vsegs并始终保留20个vsegs?
否,HAWQ中的会话不会保留资源。当没有足够的vsegs时,查询将挂起等待资源到达,超时后,查询将失败。
我猜hawq将保留20个资源槽,并继续请求80个资源槽。但这会导致饥饿。资源管理器应该能够检测到这一点。
在短期内,请求(N1、N2),RM判断可用虚拟段编号N
{
如果N>=N2,则返回N2;
否则,如果N>=N1,则返回N1;
否则就挂起,直到有足够的资源。
}
但如果query1和query2在不同的资源队列中,则由资源队列的比例决定。