ClickHouse-物化视图

物化视图是ClickHouse的一种优化技术,预先计算并缓存查询结果,提高查询速度。它基于表创建,当数据源变化时自动更新。创建语法如`CREATEMATERIALIZEDVIEW...`。示例中展示了如何在ClickHouse中创建物化视图并插入数据,强调了使用SummingMergeTree引擎进行数据聚合的注意事项。创建物化视图时不应使用POPULATE,而应在创建后导入数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官方文档

什么是物化视图

ClickHouse 中物化视图(Materialized View)是一种预先计算并缓存结果的视图,它存储在磁盘上并自动更新,典型的空间换时间思路。物化视图是一种优化技术,它可以加速查询操作,降低系统负载,并提高查询性能。

创建语法:

CREATE [MATERIALIZED] VIEW [IF NOT EXISTS] [db.]table_name [TO[db.]name] [ENGINE = engine] [POPULATE] AS SELECT ...
物化视图工作流程

当你创建一个物化视图时,ClickHouse 会计算该视图的结果,并将结果存储在磁盘上。然后,当你查询该视图时,ClickHouse 会直接从磁盘上的结果中获取数据,而不需要重新计算。

物化视图可以基于一个或多个表创建,并可以使用 SQL 查询语句定义。它可以使用各种查询操作进行更新,例如 Insert、Update、Delete 。当数据源表发生更改时,物化视图会自动更新,以保持结果的一致性。

注意:使用物化视图,可以在查询性能和数据一致性之间进行权衡。物化视图可以提高查询性能,但会增加数据更新和维护的开销。

使用示例

这边是以官方提供的数据来操作。example-datasets

  • 创建数据库以及表,这里给出 sql,也可以去上面给的地址拿:

    DROP DATABASE IF EXISTS git;
    CREATE DATABASE git;
    
    CREATE TABLE git.commits
    (
        hash String,
        author LowCardinality(String),
        time DateTime,
        message String,
        files_added UInt32,
        files_deleted UInt32,
        files_renamed UInt32,
        files_modified UInt32,
        lines_added UInt32,
        lines_deleted UInt32,
        hunks_added UInt32,
        hunks_removed UInt32,
        hunks_changed UInt32
    ) ENGINE = MergeTree ORDER BY time;
    
    CREATE TABLE git.file_changes
    (
        change_type Enum('Add' = 1, 'Delete' = 2, 'Modify' = 3, 'Rename' = 4, 'Copy' = 5, 'Type' = 6),
        path LowCardi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值