美文网首页公众号:阿区先生
ClickHouse --表引擎之-------MergeTre

ClickHouse --表引擎之-------MergeTre

作者: wudl | 来源:发表于2020-12-01 19:23 被阅读0次

    1. ClickHource 建表引擎的功能

    1. 数据的存储方式
    2. 是否可以使用索引
    3. 数据的存储位置
    4. 并发数据的访问
    5. 会否可以使用分区
    6. 是否支持数据的副本
    

    2.ClickHouse 的表引擎分为四大类

    1. MergeTree 系列引擎

    2. Log 系列引擎

    3. 与其他存储/处理系统集成的引擎

    4.特定功能的引擎

     每个引擎都包含了多个具体的引擎,每个引擎均都有使用的场景。
    

    3. 详细来说说MergeTree 系列引擎

    3.1MergeTree 引擎的使用场景

    使用与高负载任务的最通用的和功能强大的表引擎,可以快速插入数据并进行后续的后台数据处理,支持复制(使用Replicated*的引擎版本), 分区和其他的引擎不支持的特性。
    

    3.2 MergeTree 的引擎系列有几大类

    1.MergeTree 
    2.ReplacingMergeTree
    3.SummingMergeTree
    4.AggregatingMergeTree
    5.CollapsingMergeTree
    6.VersionedCollapsingMergeTree
    7.GraphiteMergeTree
    

    4.MergeTree 系列引擎的特点和存储结构

    4.1 MergeTree 是ClickHouse 中最强大的的表引擎。

    主要的特点:

    1.数据按照主键排序,稀疏索快速检索数据
    2.数据的分区,增加一个查询效率(分区也就是一个分目录的存储和hive 的分区概念一样)
    3.数据副本,ReplicatedMergeTree系列的引擎支持数据副本, 提升查询性能和容错
    4.数据采样,设置采样方法,快速分析数据。
    

    4.2 建表的实例

    关键字:
    ENEIGE---------------------- 引擎名称和参数
    PARTITION  BY----------------分区的字段
    ORDER BY-------------------- 表的排序键
    PRIMARY KEY------------------表的主键
    SAMPLE BY----------------- --采样表达式
    TTL -------------------------定义行数据的存储时间,磁盘和卷之间的数据片段的自动移动的逻辑。
    STTINGS ---------------------控制MergeTree的行为的额外参数
    

    4.3 MergeTree 的重要参数:

    重要的参数:
    1.index_granularity :索引的粒度,以行数为单位,表示索引的标记(mark) 之间的最大行数,默认值:8192.
    2.index_granularity_bytes: 索引的粒度,以自己为单位,表示索引粒度的最大字节大小,默认值是10Mb ,如果设置该参数为0, 将仅按照行数限制索引粒度大小。
    3.use_minimalistic_part_header_in_zookeeper: 数据片段(part) 头在Zookeeper 中的存储方法,设置为1,紧凑存车处数据片段头信息,极大减少Zookeeper 的存储数据量。
    4.storage_policy : 存储策略,存储策略定义了使用多块社保进行数据存储的逻辑。
    其他的参数设置可以用查询默认表:
    select * from system.merge_tree_settings
    

    4.4 建表实例

    
     
    // 创建不分区表
    CREATE  TABLE merge_demo
    ( srcip STRING, destip STRING ,date_time DATETIME)
     ENGINE=MergeTree() 
     ORDER BY srcip SETTINGS index_granularity = 8192;
    // 插入数据
    insert into merge_demo values('113.248.234.232','123.212.22.01','2018-07-12 14:25:31'),
    ('113.248.234.231','123.212.22.01','2019-08-15 14:25:31'),
    ('113.248.234.230','123.212.22.01','2020-09-20 14:25:31'),
    ('113.248.234.232','123.212.22.01','2018-10-12 14:25:31'),
    ('113.248.234.231','123.212.22.01','2018-11-28 14:25:31')
    
    // 常见分区表
     CREATE  TABLE merge_partition_demo
     ( srcip STRING, destip STRING ,date_time DATETIME)
     ENGINE=MergeTree() 
     PARTITION BY toYYYYMM(date_time)
     ORDER BY (srcip);
     // 插入数据
    insert into merge_partition_demo values('113.248.234.232','123.212.22.01','2018-07-12 14:25:31'),
    ('113.248.234.231','123.212.22.01','2019-08-15 14:25:31'),
    ('113.248.234.230','123.212.22.01','2020-09-20 14:25:31'),
    ('113.248.234.232','123.212.22.01','2018-10-12 14:25:31'),
    ('113.248.234.231','123.212.22.01','2018-11-28 14:25:31');
    
    
    可以看出分区表和普通表的存储不同如下图
    
    22222222222222222.jpg

    文件解释:

    1.checksums.txt:校验文件的正确性和完整性。
    2.columns.txt:存储列的信息,包括数据类型。
    3.count.txt : 存储分区目录下数据的总行数。
    4.primary.idx : 存储索引数据的文件。稀疏索引,能够加速查询。
    5.bin文件:存储数据的文件, 以压缩格式存储,默认LZ4。
    6.mrk文件:存储列的数据标记的文件。
    7.partiton.dat:存储存储分区表达式生成的值。使用二进制格式存储。该文件只在分区表中存储。
    8.minmax_*文件: 存储能当前目录下, 分区字段对应的原始字段的最小和最大值
    

    相关文章

      网友评论

        本文标题:ClickHouse --表引擎之-------MergeTre

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