智能索引被加载后常驻内存,refresh table
可以释放表元数据占用的内存空间。
增加集群层参数配置限制集群sql下发的任务数目。
(1)查询当前集群已有用户及其优先级别select user, task_priority from gbase.user
,明确后续参数的数值配置;
(2)gbase_use_priority_queue
为优先级队列启用的开关,置1打开;
(3)将参数_gbase_priority_tasks
设置为期望的相同优先级任务的最大下发数目(默认值为CPU核数,上限为64);
(4)将参数_gbase_priority_total_tasks
设置为期望的全部优先级任务的最大下发数目(默认值为CPU核数的2倍,上限为128)。
注意:受控的任务语句只限于select查询及DML中的查询部分,上述参数均不支持show variables ...
查询,修改后需重启集群生效。
以一个静态池为例,期望最大化利用内存(同时避免溢出风险),max_memory值不应超过gnode进程的最大可用内存。
max_memory值指Large堆内存的分配上限。默认情况下:gnode的最大可用内存为(系统内存+swap)*0.8。其中比率0.8可由gbase_memory_pct_target参数调整。无论是否开启资源管理,只要比率设置合理,不会引发系统OOM。
两种机制同时存在,max_memory值应小于gnode的最大可用内存限制时才会生效,反之则体现为不生效或不限制。
由于内核BUG,RH7.3/SUSE12以下版本,只能使用一个静态池。为实现类似静态池效果,可以使用多个动态池配合并行度和优先级参数。动态池的优先级和百分比参数的配置可影响CPU时间片争抢的权重,从而影响SQL的最终执行时间。在实践中,并行度参数比优先级参数会更显著的影响SQL的最终执行时间。