Used: 438105027512, Limit: 438103947386. Mem usage has exceed the limit of single query, You can change the limit by set session variable exec_mem_limit目前我设置比较这个限制的值大,还是报错超出限制,

在请教一个问题,我建完索引之后,在导入数据的话,索引需要重新建吗

不需要,有一个速度更快,就是不要有索引,把数据导入后 再建索引

请教一下目前我们不是lineitem,orders 是一组,partsupp part 是一组,如果组合换一下,会解决吗

我看您提供的SQL,lineitem,orders 是一组,partsupp part 是一组,是比较合适,请问如何组合换一下?

x现在lineitem,orders 他俩join的时候不是会超出范围,orders 这个表比较大吗?是不是可以lineitem,partsupp 他俩组合, orders,part 组合

您说的这个情况是基于哪个SQL判断出来?

sql5

select n_name, sum(l_extendedprice * (1 - l_discount)) as revenue
from customer, orders, lineitem, supplier, nation, region
where
  c_custkey = o_custkey
  and l_orderkey = o_orderkey
  and l_suppkey = s_suppkey
  and c_nationkey = s_nationkey
  and s_nationkey = n_nationkey
  and n_regionkey = r_regionkey
  and r_name = 'ASIA'
  and o_orderdate >= date '1994-01-01'
  and o_orderdate < date '1994-01-01' + interval '1' year
group by n_name
order by revenue desc;

这个SQL里面没有 partsupp这个表。

这个SQL最关键就是orders和lineitem之间的关联查询。

那这两个表关联,就是hash join 有问题

嗯,所以才需要使用colocate join.

可能是数据量太大,使用colocate join 也没有效果

应该能跑出结果,效率也比shuffle join好的。

今天晚上我先按照您这边给的最后一版本-h 的建表语句来建表,导入数据,明天我们一起看看效果吧

好的,希望有个好结果,谢谢!

之前40s左右 sql 现在跑不动了,之前sql 跑完数据导入什么操作都不用做直接查40s

cpu利用不上了

参数优化
2.3.0
enable_pipeline_engine=false
parallel_fragment_exec_instance_num=64
pipeline_dop=0 把这行配置去掉
exec_mem_limit = 515396075520

be.conf
mem_limit=95%
disable_storage_page_cache=false
storage_page_cache_limit= 64G

嗯嗯好的,我测试一下

没有效果