TinyLog:
1.数据存在磁盘中 2.不支持索引 3.没有并发控制 4.表占用空间比较小 5.适用于小表 6.适用于这个表数据基本不变的情况 7.数据保存在/var/lib/clickhouse/data目录中 目录结构是 库名称 表名称 字段名 CREATE TABLE t(a UInt16, b String) ENGINE=TinyLog; # 创建表 insert into t (a, b) valuse(1, 'abc'); # 插入数据
Memory:
1.数据存储在内存中 2.当前启动有效,如果机器重启数据将跟着消失 3.速度很快,能打开10G/s 4.数据限制最好设置在1亿行 5.不支持索引
Mrege:
1.本身不存储数据,合并其他表的数据
MregeTree
1.安装主键进行排序 2.可以使用分区 3.支持数据副本 4.支持数据采样 参数 ENGINE=MregeTree() [PARTITION BY EXPR] # 分区键 按照什么分区 只能安装日期分区 要求表里面有个date型数据 [ORDER BY EXPR] # 排序 可以多个字段排序(id, name) [PRIMARY KEY EXPR] # 主键 需要跟排序字段不一样 如果没有指定 跟排序字段一样 [SAIMLE BY EXPR] # 抽样的表达式 如果写 组件必须包含这个表达式 [SETTINGS name = value,...] # 设置额外产生
ReplacingMergeTree
1.在MergeTree基础上添加了删除重复数据 主键相同就是重复数据 2.数据去重只会在合并的时候出现,但不保证一定没有重复数据 3.合并的时候具有相同主键的选择留下一行,如果var指定了,选择ver值最大的版本号,如果没有指定,留下最后插入的那条数据 ReplacingMergeTree([ver]) # ver 版本列,类型为UInt* Date DateTime [PARTITION BY EXPR] # 分区键 按照什么分区 只能安装日期分区 要求表里面有个date型数据 [ORDER BY EXPR] # 排序 可以多个字段排序(id, name) [PRIMARY KEY EXPR] # 主键 需要跟排序字段不一样 如果没有指定 跟排序字段一样 [SAIMLE BY EXPR] # 抽样的表达式 如果写 组件必须包含这个表达式 [SETTINGS name = value,...] # 设置额外产生
Distributed
1.分布式引擎 2.本身不存储数据, 可以在多个服务器上进行分布式查询。 读是自动并行的。读取时,远程服务器表的索引(如果有的话)会被使用。 3.Distributed(cluster, database, table[, sharding_key])参数 cluster:集群名称 vim /etc/metrika.xml <report_shards_replicas> <!-- clickhouse显示名称 可以自己修改 --> database:合并数据库的名称 table[, sharding_key] : 合并的表名称