资源管理器
在单用户环境中,系统可以将所有资源用于单个查询,使该查询得到最有效率的执行。您的环境更有可能需要同时运行几个查询,因此难以做到为每个查询提供最大数量的资源(运行时间最快),同时又能以合理运行时间同时为多个查询提供服务。
Vertica 资源管理器可以解决此矛盾,同时确保每个查询最终得到服务,实际系统限制始终被顾及。
例如,在系统面临资源压力时,资源管理器可能会对查询进行排队,直到资源可用或达到超时值。另外,在配置各个资源管理器设置时,您可以根据针对系统运行的并发查询的预期数量来优化每个查询的目标内存。
资源管理器对执行查询的影响
资源管理器以各种方式影响单个查询的执行。将查询提交到数据库时,会发生以下一系列事件:
-
对查询进行解析、通过优化查询确定执行计划,然后将查询分发到参与节点。
-
在每个节点上调用资源管理器,以评估运行查询所需的资源并与当前使用的资源进行比较。将发生下列情况之一:
-
如果查询本身所需的内存超过计算机的物理内存,则会拒绝查询,即查询可能无法运行。除了配置明显不足的节点外,这种情况几乎不会出现。
-
如果当前无法满足资源要求,查询则会排队等候。查询将保留在队列中,直到有足够的资源释放出来后才会运行;若超时,查询则会被拒绝。
-
其他情况下允许查询运行。
-
-
当所有参与节点都允许查询运行时,查询即会开始运行。
特定查询的资源分配和允许运行的最大查询数量取决于资源池配置。请参阅资源池架构。
在每个节点上,不会为处于队列中的查询保留或保存任何资源。但是,在某些节点上排队的多节点查询将持有其他节点上的资源。在这种情况下,Vertica 会竭力避免发生死锁。