StarRocks物化视图

这篇具有很好参考价值的文章主要介绍了StarRocks物化视图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

物化视图文档,更多的可以去官方文档了解,写得很详细。

物化视图

物化视图(Materialized View)是一种预先计算和存储数据的技术,可以加速数据处理和查询操作,降低计算资源的使用,提供更高的查询并发能力。简单来说它包含了一个查询结果的预计算数据。这个概念与普通视图不同,普通视图是虚拟的,不存储数据,每次查询都需要动态计算。

在 StarRocks 中,物化视图可以分为同步和异步两种类型,自 2.4 版本起,StarRocks 支持异步物化视图

  • 同步物化视图:是指物化视图与基表的数据保持实时同步,即基表数据更新后,物化视图立即进行更新。
  • 异步物化视图:是在基表数据更新后,通过定时任务或者触发条件来触发物化视图的更新,因此在某个时间点上,物化视图的数据可能与基表存在一定的延迟。

相关概念

物化视图涉及几个概念,包括基表、刷新和查询改写。

  • 基表(Base Table):基表是物化视图的数据来源,它可以是一个或多个表。
  • 刷新(Refresh):物化视图的刷新是指更新物化视图中的数据,使其与基表的数据保持同步。在 StarRocks 中,刷新可以分为同步和异步两种方式。同步刷新是指物化视图与基表的数据保持实时同步,而异步刷新则是在基表数据更新后,通过定时任务(ASYNC)或者手动(MANUAL)触发物化视图的更新,因此在某个时间点上,物化视图的数据可能与基表存在一定的延迟。
  • 查询改写(Query Rewrite):查询改写是指在对已构建了物化视图的基表进行查询时,系统自动判断是否可以复用物化视图中的预计算结果处理查询。如果可以复用,系统会直接从相关的物化视图读取预计算结果,以避免重复计算消耗系统资源和时间。

创建物化视图

在 StarRocks 中定义物化视图通常遵循以下步骤:

  1. 创建物化视图: 使用 CREATE MATERIALIZED VIEW 语句来创建一个物化视图。指定视图的名称、列、聚合类型以及来自哪个表。
  2. 指定查询: 在创建语句中,你需要指定物化视图的查询逻辑。这通常涉及到选择哪些列,以及如何聚合数据。
  3. 刷新物化视图: 物化视图可以根据需要定期刷新,以确保它们包含最新的数据。在某些系统中,这可以是自动或手动或通过计划任务进行。

这里举例异步物化视图,因为我用得比较多:

CREATE MATERIALIZED VIEW sale_order_mv
DISTRIBUTED BY HASH(event_date)
REFRESH ASYNC START('2021-07-24 04:15:00') EVERY (interval 1 day)
AS SELECT event_date, product_id, sum(amount) as total_sales from sale_order group by product_id;

你可以看到,创建时的语法跟 mysql 的很像,所以 mysql 的大部分语法它都支持,这很好。当然 Starrocks 也有一些函数,比如我用得最多的 JSON 函数(parse_json),大家可以参考文档,这里不多介绍。函数参考

对于我这里为什么不用同步物化视图,因为需求并不需要实时刷新数据,以需求为准。

还有命名为:sale_order_mv,是为了方便我区分哪个是物化视图,这个无限制,看个人喜好。

解释下这个 REFRESH ASYNC START('2021-07-24 04:15:00') EVERY (interval 1 day)是异步物化视图的刷新方式,其中START参数指定了刷新任务的起始时间,EVERY参数指定了刷新任务的间隔时间。在这个例子中,物化视图会在2021-07-24 04:15:00 开始刷新,每隔1天自动刷新一次。

异步物化视图本质上是一个物理表,其中存储了根据特定查询语句预先计算的完整结果集。在物化视图第一次刷新后,即可直接查询物化视图。

select * from sale_order_mv;

因为其基表是滚动的,且我们设置的是定时更新,所以结果可能与你从基表上查询的结果不一致。这也是可以手动刷新的:

REFRESH MATERIALIZED VIEW sale_order_mv;

还有一个我们需要知道当前物化视图是否刷新完了,如果基表小的话,很快就执行完了,但我们还是需要确认下的,以防万一:

SHOW MATERIALIZED VIEWS WHERE NAME = "sale_order_mv"\G;

result:
*************************** 1. row ***************************
                                  id: 211660
                       database_name: cc_event_log
                                name: sale_order_mv
                        refresh_type: ASYNC
                           is_active: true
                      partition_type: UNPARTITIONED
                             task_id: 316890
                           task_name: mv-211660
             last_refresh_start_time: 2022-01-23 04:15:00
          last_refresh_finished_time: 2022-01-23 04:15:17
               last_refresh_duration: 17
                  last_refresh_state: SUCCESS
          last_refresh_force_refresh: false
        last_refresh_start_partition:
          last_refresh_end_partition:
			last_refresh_mv_refresh_partitions: sale_order_mv
             last_refresh_error_code: 0
          last_refresh_error_message:
                                rows: 327885569
                                text:

注意: 这里有几个需要我们关注的指标 is_active, last_refresh_state, last_refresh_error_code,下面分别说下。

如果你的物化视图是正常的,但这里 is_active 是 false 的话(禁用),就得启用它,不然数据无法刷新,遇到过好几次了。

ALTER MATERIALIZED VIEW sale_order_mv ACTIVE;

last_refresh_state 与 last_refresh_error_code,看词就知道是什么意思了,一个是最近一次刷新状态是否成功,一个是最近一次刷新的的错误码,错误码非 0 代表有错误产生,可以看下 last_refresh_error_message 具体信息,我遇到的大多数是硬盘空间不足或者是刷新超时(query_timeout),Starrocks 的 query_timeout 当前默认是 300 s,即5分钟。文章来源地址https://www.toymoban.com/news/detail-823064.html

好处

  • 加速数据处理和查询操作:物化视图是一种预先计算和存储数据的技术,可以加速数据处理和查询操作,降低计算资源的使用,提供更高的查询并发能力。
  • 提高查询性能:物化视图可以通过查询改写来优化查询计划,提高查询性能,降低计算资源的使用。

到了这里,关于StarRocks物化视图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 白山云基于StarRocks数据库构建湖仓一体数仓的实践

    随着每天万亿级别的业务数据流向数据湖,数据湖的弊端也逐渐凸显出来,例如: 数据入湖时效性差:数据湖主要依赖于离线批量计算,通常不支持实时数据更新,因此无法保证数据的强一致性,造成数据不及时、不准确; 查询性能差:在传统架构下,数据湖的查询速度较

    2024年01月18日
    浏览(47)
  • 4、hive的使用示例详解-事务表、视图、物化视图、DDL(数据库、表以及分区)管理详细操作

    1、apache-hive-3.1.2简介及部署(三种部署方式-内嵌模式、本地模式和远程模式)及验证详解 2、hive相关概念详解–架构、读写文件机制、数据存储 3、hive的使用示例详解-建表、数据类型详解、内部外部表、分区表、分桶表 4、hive的使用示例详解-事务表、视图、物化视图、DDL

    2024年02月09日
    浏览(49)
  • 大数据StarRocks(七):数据表创建

    1.1 Row Column 一张表包括行(Row)和列(Column)。Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。 ⚫ 在默认的数据模型中,Column 只分为排序列和非排序列。存储引擎会按照排序列对数据进行排序存储,并建立稀疏索引,以便在排序数据上进行快速查找。 ⚫ 而在

    2024年01月16日
    浏览(58)
  • 数据仓库系列:StarRocks 入门培训教程

    其它文章请参考 数据仓库系列:StarRocks 下一代高性能分析数据仓库的架构、数据存储及表设计 数据仓库系列:StarRocks的简单试用及与clickhouse的对比 数据仓库系列:如何将StarRocks集群与Jupyter集成? StarRocks 是一款MPP DB, 对标ClickHouse、Vertica、Teradata、Greenplum,在查询性能上远

    2024年02月11日
    浏览(69)
  • StarRocks 中的数据模型和索引使用

    StarRocks 支持四种数据模型,分别是明细模型 ( Duplicate Key Model )、聚合模型 ( Aggregate Key Model )、更新模型 ( Unique Key Model ) 和主键模型 ( Primary Key Model )。 1.1 明细模型 明细模型是默认的建表模型。如果在建表时未指定任何模型,默认创建的是明细类型的表。排序列使用稀疏索引

    2024年02月07日
    浏览(38)
  • Flink+StarRocks 实时数据分析新范式

    摘要:本文整理自 StarRocks 社区技术布道师谢寅,在 Flink Forward Asia 2022 实时湖仓的分享。本篇内容主要分为五个部分: 极速数据分析 实时数据更新 StarRocks Connector For Apache Flink 客户实践案例 未来规划 点击查看原文视频 演讲PPT 统一 OLAP 分析的趋势,以及 StarRocks 极速查询分析

    2024年02月13日
    浏览(47)
  • 【StarRocks】数据结构和修改表语句大全

    1 数据类型 2 修改表结构 StarRocks 支持多种 DDL 操作。 可以通过 ALTER TABLE 命令可以修改表的 Schema,包括增加列,删除列,修改列类型(暂不支持修改列名称),改变列顺序。 1 增加列 例如,在以上创建的表中,在 ispass 列后新增一列 uv,类型为 BIGINT,默认值为 0。 2 删除列

    2024年02月15日
    浏览(57)
  • 【大数据hive】hive视图与物化视图使用详解

    目录 一、hive中的视图 二、hive视图语法与操作 2.1 数据准备 2.2  创建视图

    2024年02月06日
    浏览(46)
  • Paimon+StarRocks 湖仓一体数据分析方案

    摘要:本文整理自阿里云高级开发工程师曾庆栋(曦乐)在 Streaming Lakehouse Meetup 的分享。内容主要分为四个部分: 传统数据仓库分析实现方案简介 Paimon+StarRocks 构建湖仓一体数据分析实现方案 StarRocks 与 Paimon 结合的使用方式与实现原理 StarRocks 社区湖仓分析未来规划 点击查

    2024年02月10日
    浏览(42)
  • starrocks对大量数据怎么实现hash join

    以下是个人理解,可能不正确,希望评论指正: be的入口是:main-start_be,这里注册的doris::PBackendService中有一个exec_plan_fragment用来执行fe发来的查询计划。执行分两步:FragmentExecutor::prepare,FragmentExecutor::execute。 在prepare阶段,FragmentExecutor::prepare-_prepare_pipeline_driver-PipelineBuild

    2024年02月21日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包