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]  : 合并的表名称