count 使用PARALLEL(4) 没有效果

执行 SELECT

/+QUERY_TIMEOUT(600000000) PARALLEL(6)/

count(ads_personnel_base_table_people_330000000000.ident_no) as count

FROM

ads_personnel_base_table_people_330000000000

INNER JOIN t1330000202409001621 ON

t1330000202409001621.ident_no = ads_personnel_base_table_people_330000000000.ident_no;
时间耗时很长

1、select /+QUERY_TIMEOUT(600000000) enable_parallel_dml parallel(6)/ count(ads_personnel_base_table_people_330000000000.ident_no) as count

FROM

ads_personnel_base_table_people_330000000000

INNER JOIN t1330000202409001621 ON

t1330000202409001621.ident_no = ads_personnel_base_table_people_330000000000.ident_no;
2、 查一下这个系统变量 parallel_servers_target
show variables like ‘%parallel_servers_target%’;

  • parallel_servers_target 用于设置每个 Server 上的并行查询排队条件。当多条并行执行(Parallel eXecution,PX)SQL 总计消耗的线程数超过并行查询排队条件后,后继并行执行 SQL 需要排队等待。这个值会在创建租户时自动设定。
    3、执行计划发一下 保存在文本里
    explain extended select /+QUERY_TIMEOUT(600000000) enable_parallel_dml parallel(6)/ count(ads_personnel_base_table_people_330000000000.ident_no) as count

FROM

ads_personnel_base_table_people_330000000000

INNER JOIN t1330000202409001621 ON

t1330000202409001621.ident_no = ads_personnel_base_table_people_330000000000.ident_no;

1.麻烦发下OB的版本
2.加并行和不加并行 执行耗时差多少?
3.麻烦使用obdiag收集下SQL性能问题排查所需要信息

obdiag gather scene run --scene=observer.perf_sql [options]

https://www.oceanbase.com/docs/common-obdiag-cn-1000000001491226

你咋知道没效果。。可以用explain extended 命令看下这条SQL,里面有outline信息来判断hint是否生效

友情提醒:有一个需要注意的点,如果是mysql客户端执行的话,hint要生效,需要加-c

https://www.oceanbase.com/knowledge-base/oceanbase-connector-j-1000000000210058?back=kb