GaussDB(DWS)就支持这种操作。确切说,GaussDB(DWS)支持两种并发控制的操作:

1)第一种与内存相关,当给你的用户分配了一定内存时,那么会根据内存的使用情况去限制并发,假如内存使用达到了阈值,那么实际的并发量也会受到限制,达到阈值后的语句会进入排队状态。可以根据pgxc_stat_activity中的enqueue字段进行判断,语句当前是在什么状态。

2)第二种可以在不理会内存的情况下,只计量并发数量,达到并发数量之后,就会让语句进行排队。

这里介绍下单用户控制并发的设置方法:

1.在所有节点创建好控制组

gs_ssh -c “gs_cgroup -c -S class_a”

gs_ssh -c “gs_cgroup -c -S class_a -G workload_a”

2.创建业务资源池

create resource pool p1 with (control_group=”class_a:workload_a”);

alter resource pool p1 with (active_statements=10,mem_percent=0);

3.关联用户与该资源池

ALTER USER testuser RESOURCE POOL ‘p1’;

实例中的资源池,控制组,用户名称等可以随意修改。