并行查询parallel执行中,导致后续的sql都在执行等待

【 使用环境 】生产环境
【 OB or 其他组件 】ob
【 使用版本 】4.0
【问题描述】
执行下面的sql查询百万表关联查询,执行未查出结果时,其他sql全部卡住等待
select /*+ parallel(32) NO_REWRITE */ * from gj a left join logical_standing_alarm b
on a.codeOrName = b.codeOrName



查看官网文档后,还是没明白并行查询执行后是卡住后续所有的sql还是会影响后续的并行sql查询?
parallel是不是需要特定的情况才可以去执行?
不能为了加速查询sql都加上吗?

parallel_servers_target这个指标都是针对px类型的SQL进行约束的,当超过这个阈值,阻塞的是后续的px类型sql的执行,不阻塞本地SQL的执行。也就是并发sql不会占用所有线程,会给普通sql预留一些线程资源。所以parallel数量的设置应该根据需求和资源来确定,如果全都设成并发sql,就会互相阻塞。

parallel_servers_target的值是租户cpu*cpu的线程数?
租户的cpu不是节点cpu的总数吗?

租户的cpu不是节点cpu的总数
----这个不是的啊,租户所使用的资源单元unit的规格cpu才是

好的,谢谢,老师

租户可分配的内存和cpu不受机器数量的影响?
租户是针对每一台机器的设置?
租户可分配的内存和cp取决于集群中最小机器的配置吗?

租户是基于资源单元unit创建的,unit的配置是针对机器的,一个租户的unit配置在所在的机器上都是相同的。
租户可分配的内存和cpu会受到机器配置和数量的限制,但在一个zone里面可以分配多台机器,不局限于最小的机器。
举个例子:具有3个zone的集群,一个租户最大可用内存预期为30GB,他可以在每个zone里面找一台(≥)30GB的机器,内存限制为30GB;也可以在每个zone里面找3台(≥)10GB的机器,最大内存限制为10GB。
如果说每个zone就一台机器,那确实会受限于规格最小的机器。

好的,谢谢老师的解答