【 使用环境 】测试环境
【 OB or 其他组件 】Observer
【 使用版本 】4.1
【问题描述】
依据社区文档https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000355074
进行TPCH性能测试,部署模式为单机版本,CPU:96核的Intel(R) Xeon(R) Gold 6240R,内存376G,为OB开了250G的工作内存,磁盘1T。
测试的数据量为100G的TPCH数据,使用标准dbgen生成的数据,依靠上面文档进行调参,22条SQL的总时间大约是36秒左右,没有问题。
但单独执行SQL,也根据上面文档进行调参,TPCH-Q9在96并行下,大于4-5秒左右,没问题,但是如果不开并行,即parallel(1)时,Q9执行了44分钟,严重劣化,2并行的时候还只有1分40秒左右,为什么不开并行与开并行,性能劣化如此之大。
【复现路径】问题出现前后相关操作
【问题现象及影响】
【附件】
不开并行的时候
2并行的时候
96并行的时候
测试SQL
其灵
#3
你好,麻烦也贴一下parallel(2)和parallel(2)的执行计划吧
其灵
#5
好的,我们已经提交工单了,会有研发人员跟进分析问题
其灵
#6
麻烦分别对三条sql执行一下:explain sql;
sql就是上面执行的sql命令,这样可以看到命令解析后的具体步骤
上面的计划就是explain的结果。96并行和2是差不多,主要的问题就是不开并行时候的区别
这个应该是非常好重现的,就是按照社区提供的测试方法,SQL中的hint选择并行度即可。
其灵
#9
截图不太全哈,还需要下面的内容,截不下来贴文本也可以的
这个现象应该是符合预期的, parallel 1和 parallel > 1在执行时间上的差异背后主要是由两个原因造成的,
1是执行计划的不同, 2是执行方式的不同, 这表现在parallel 1在Join的Shuffle方式选择上除了pkey只有拉回到本地, parallel > 1则可以做broadcast以及hash shuffle等多样化选择, 在执行方式上, parallel 1为了最小化资源使用往往会物化计算中间结果, 这也增加了执行时间, 产品上并不承诺parallel 1和parallel 2执行性能线性增长~
并行可以做广播和重分布我可以理解,但是您后面所说的最小化资源是什么意思,为什么不并行在资源充足的时候也要最小化资源
其灵
#12
并发度为1就表示希望减少资源使用,所以cpu和内存都尽可能减少;高并发意味着资源充足,可以使用更多内存。低并发度+充足内存的情况比较少见,一般来说各种资源都是配套的,所以要么都多用,要么都少用。
这个有没有什么开关或参数能控制吗,我在不并行的时候,也希望能以最大功率处理SQL