Gbase 8a mpp 集群计划(一) 计划的介绍和查看

        8a mpp是一款分布式的数据库,可以有多个cluster节点(控制节点)和data节点(数据节点),查询计划就是针对用户输入的sql给出能够使查询时间最快的分布式计划。

        例如目前有一个3节点的集群。(datanode1,datanode2,datanode3)

        首先普及下8a mpp支持的表类型:随机分布表,hash分布表,复制表。

        1、随机分布表:

              数据随机分布在所有的data节点上。 比如10条数据,datanode1上随机插入了4条,datanode2上随机插入了3条,datanode3随机插入了3条。

        2、hash分布表:

              按照定义的hash键值计算hash,然后分布到所有的data节点上。比如10条数据,按照key列插入的值计算hash,然后分布到固定对应的节点上。

        3、复制表

              把所有数据在所有节点上都保存一份。所有节点都有全部的数据。

         查询计划就是针对所查询的表给出一条可查询出数据的计划。

          比如:

          1、查询一个复制表select × from tcopy; 由于复制表的是存在所有节点上,并且每个节点都是全部数据,那计划就可以选择任意一个可用(保证能够正常的)的节点进行查询,然后返回数据即可。

           2、查询一个分布表(随机分布或hash分布) select × from tdis; 由于分布表是每个节点都可能有,所以需要从所有节点都获取数据,然后返回。

           3、查询多个表的连接涉及到条件,需要考虑的就更多了,复制表和复制表的连接可以直接查询,但是分布表和分布表就需要进行评估,多于两个表进行连接还需要评估连接顺序。目前就不深入介绍了。

            说完查询计划后,然后来介绍下如何去查看计划。

            查询语句:

            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;

             tpch1000s的数据。customer, orders, lineitem,supplier,nation,region都是随机分布表。

             使用explain extended select ....;可以查看集群的详细计划和步骤。如下图:

       咱们先来看下基本的定义:

        Leaf type:当前步骤的类型  REGULAR STEP:一般的拉表步骤  COMBINER_STEP:汇总步骤  

        Need combiner:是否需要汇总

        Target temp table:目标的中间表

        Temp table uesd:利用的中间表

        Hash Redist Indexs:重分布的键值位置,就是投影列的位置

        从上面的计划看,

        首先第一步是拉表,目标中间表名是_tmp_2097588416_733_t438_1..表明这是一个复制表。从region拉表到临时表,最终临时表为复制表。

        第二步是拉复制表_tmp_2097588416_733_t438_2...。把第一步的临时表和nation进行join之后的结果作为目标临时表。

        第三步是拉复制表_tmp_2097588416_733_t438_3...。把第二步的临时表和supplier做join之后的结果作为目标临时表。

        第四步是orders带单表条件拉复制表_tmp_2097588416_733_t438_4....。

        第五步是lineitem表拉复制表_tmp_2097588416_733_t438_5....。

        第六步是拉分布表_tmp_rht_2097588416_733_t438_6...。hash redist indexs:1说明使用第一个投影作为hash键进行重分布。

        _tmp_2097588416_733_t438_3... inner join custom inner join _tmp_2097588416_733_t438_4...  inner join _tmp_2097588416_733_t438_5...按照n_name重分布,同时做group by计算sum

        第七步是拉复制表_tmp_2097588416_733_t438_7...,在第六步的临时表基础上进行group by聚集。注意此步骤需要汇总。group by算子是在所有节点分别做group by,然后汇总。

         第八步是汇总步骤,获取最终的结果。

        以上就是简单的介绍8a mpp分布式计划和查看分布式的详细计划。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值