美文网首页
2022-12-14 ROLLUP物化视图的作用

2022-12-14 ROLLUP物化视图的作用

作者: felix_feng | 来源:发表于2022-12-13 20:09 被阅读0次

    包括

    1. 修改前缀索引。我们可以使用物化视图来实现更少数据量的扫描,或者通过物化视图调整列顺序以命中前缀索引(明细模型也适用)。
    2. 物化视图就是StarRocks为明细模型打造的“预计算”方案,本质上也是“空间换时间”,但实现更为灵活。
    3. 删除Base表时,所有基于Base表的物化视图会被同步删除。
    假设table11是一张销售记录明细表,存储了每个交易的交易id、销售员、售卖门店、销售时间、以及金额:
    CREATE TABLE table11(
        record_id int,
        seller_id int,
        store_id int,
        sale_date date,
        sale_amt bigint
    ) distributed BY hash(record_id)
    properties("replication_num" = "1");
    
    明细模型表table11中会保留所有的明细数据,我们自然可以进行任意维度的分析。举个例子,如果我们需要对不同门店的销售量做分析,那么SQL写法为:
    SELECT store_id, SUM(sale_amt) FROM table11 GROUP BY store_id;
    
    
    例如针对上面的查询,我们就可以基于table11表创建一张“以售卖门店为分组,对相同售卖门店的销售额求和”的物化视图表table11_mv1。创建语句如下:
    CREATE MATERIALIZED VIEW table11_mv1 AS
    SELECT store_id, SUM(sale_amt)
    FROM table11
    GROUP BY store_id;
    
    
    
    在创建物化视图后,当数据进入表table11时,StarRocks相当于在一直在进行物化视图中的查询,并将查询结果的数据落盘。不同于MySQL中的视图概念,物化视图中的数据是真实存储的。
    

    关于物化视图的使用,当前还有一些注意事项:

    1、当前物化视图只支持对单个表的聚合。目前支持的聚合函数有:COUNT、MAX、MIN、SUM、HLL_UNION和BITMAP_UNION。物化视图的聚合函数的参数仅支持单列,比如:sum(a+b)也是不支持的。

    2、目前物化视图主要应用于明细模型,实现固定维度数据的预聚合。对于聚合模型,从预聚合的角度来讲没有创建物化视图的意义,但我们可以使用物化视图来实现更少数据量的扫描,或者通过物化视图调整列顺序以命中前缀索引(明细模型也适用)。

    相关文章

      网友评论

          本文标题:2022-12-14 ROLLUP物化视图的作用

          本文链接:https://www.haomeiwen.com/subject/iyzhqdtx.html