• 大数据ClickHouse(十三):MergeTree系列表引擎之VersionedCollapsingMergeTree


    文章目录

    MergeTree系列表引擎之VersionedCollapsingMergeTree

    一、VersionedCollapsingMergeTree基本讲解

    二、测试实例


    MergeTree系列表引擎之VersionedCollapsingMergeTree

    一、VersionedCollapsingMergeTree基本讲解

    上面提到CollapsingMergeTree表引擎对于数据写入乱序的情况下,不能够实现数据折叠的效果。VersionedCollapsingMergeTree表引擎的作用与CollapsingMergeTree完全相同,它们的不同之处在于,VersionedCollapsingMergeTree对数据的写入顺序没有要求,在同一个分区内,任意顺序的数据都能够完成折叠操作。

    VersionedCollapsingMergeTree使用version列来实现乱序情况下的数据折叠,该引擎除了需要指定一个sign标识之外,还需要指定一个UInt*类型的version版本号。

    • VersionedCollapsingMergeTree建表语句:
    1. CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
    2. (
    3. name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
    4. name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
    5. ...
    6. sign Int8,
    7. version UInt8
    8. ) ENGINE = VersionedCollapsingMergeTree(sign, version)
    9. [PARTITION BY expr]
    10. [ORDER BY expr]
    11. [SAMPLE BY expr]
    12. [SETTINGS name=value, ...]

    二、测试实例

    1. #创建表 t_version_collapsing_mt ,使用VersionedCollapsingMergeTree引擎
    2. node1 :) create table t_version_collapsing_mt(
    3. :-] id UInt8,
    4. :-] name String,
    5. :-] loc String,
    6. :-] login_times UInt8,
    7. :-] total_dur UInt8,
    8. :-] sign Int8,
    9. :-] version UInt8
    10. :-] ) engine = VersionedCollapsingMergeTree(sign,version)
    11. :-] order by (id,total_dur)
    12. :-] primary key id
    13. :-] partition by loc;
    14. #向表 t_version_collapsing_mt 中插入以下数据
    15. node1 :) insert into table t_version_collapsing_mt values(1,'张三','北京',1,30,-1,1),(2,'李四','上海',1,40,1,2);
    16. #查询表 t_version_collapsing_mt 中的数据
    17. node1 :) select * from t_version_collapsing_mt;
    18. ┌─id─┬─name─┬─loc──┬─login_times─┬─total_dur─┬─sign─┬─version─┐
    19. │ 1 │ 张三 │ 北京 │ 1 │ 30 │ -1│ 1 │
    20. └────┴──────┴──────┴─────────────┴───────────┴──────┴─────────┘
    21. ┌─id─┬─name─┬─loc──┬─login_times─┬─total_dur─┬─sign─┬─version─┐
    22. │ 2 │ 李四 │ 上海 │ 1 │ 40 │ 1 │ 2 │
    23. └────┴──────┴──────┴─────────────┴───────────┴──────┴─────────┘
    24. #向表 t_version_collapsing_mt中插入以下数据,删除“张三”信息,更新“李四”信息
    25. node1 :) insert into table t_version_collapsing_mt values(1,'张三','北京',1,30,1,1),(2,'李四','上海',1,40,-1,2),(2,'李四','上海',2,100,1,2);
    26. #查询表 t_version_collapsing_mt中的数据
    27. node1 :) select * from t_version_collapsing_mt ;
    28. ┌─id─┬─name─┬─loc──┬─login_times─┬─total_dur─┬─sign─┬─version─┐
    29. │ 1 │ 张三 │ 北京 │ 1 │ 30 │ -1 │ 1 │
    30. └────┴──────┴──────┴─────────────┴───────────┴──────┴─────────┘
    31. ┌─id─┬─name─┬─loc──┬─login_times─┬─total_dur─┬─sign─┬─version─┐
    32. │ 2 │ 李四 │ 上海 │ 1 │ 40 │ 1 │ 2 │
    33. └────┴──────┴──────┴─────────────┴───────────┴──────┴─────────┘
    34. ┌─id─┬─name─┬─loc──┬─login_times─┬─total_dur─┬─sign─┬─version─┐
    35. │ 1 │ 张三 │ 北京 │ 1 │ 30 │ 1 │ 1 │
    36. └────┴──────┴──────┴─────────────┴───────────┴──────┴─────────┘
    37. ┌─id─┬─name─┬─loc──┬─login_times─┬─total_dur─┬─sign─┬─version─┐
    38. │ 2 │ 李四 │ 上海 │ 1 │ 40 │ -1 │ 2 │
    39. │ 2 │ 李四 │ 上海 │ 2 │ 100 │ 1 │ 2 │
    40. └────┴──────┴──────┴─────────────┴───────────┴──────┴─────────┘
    41. #手动执行 optimize 命令,合并相同分区的数据,这里有可能需要执行多次
    42. node1 :) optimize table t_version_collapsing_mt;

    注意:如果不想执行多次,也可以执行 optimize table t_version_collapsing_mt final语句

    1. #查询表 t_version_collapsing_mt 中的数据如下:
    2. node1 :) select * from t_version_collapsing_mt;
    3. ┌─id─┬─name─┬─loc──┬─login_times─┬─total_dur─┬─sign─┬─version─┐
    4. │ 2 │ 李四 │ 上海 │ 2 │ 100 │ 1 │ 2 │
    5. └────┴──────┴──────┴─────────────┴───────────┴──────┴─────────┘

    • 📢博客主页:https://lansonli.blog.csdn.net
    • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
    • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
    • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
  • 相关阅读:
    casaos app下载失败。求指导
    Vue 项目中的错误如何处理的?
    Linux常用指令(八)——管道过滤
    navicat和dbeaver使用对比以及优缺点
    如何在生产环境排查 Rust 内存占用过高问题
    协程简单上手(线程切换)
    【软件测试】02 -- 软件缺陷管理
    open3d 点云去掉 nan 点和 infinite 点(附python open3d 代码)
    Elastic stack8.10.4搭建、启用安全认证,启用https,TLS,SSL 安全配置详解
    react懒加载lazy
  • 原文地址:https://blog.csdn.net/xiaoweite1/article/details/126383322