标签:mysql 重复项 aci 不可 sharding ble 出现 primary 通过
与其他框架比较
MySQL | Hive | ClickHouse |
---|---|---|
byte | TINYINT | Int8 |
short | SMALLINT | Int16 |
int | INT | Int32 |
long | BIGINT | Int64 |
varchar | STRING | String |
timestamp | TIMESTAMP | DateTime |
float | FLOAT | Float32 |
double | DOUBLE | Float64 |
boolean | BOOLEAN | 无 |
整形
浮点型(不建议用, 有精度损失问题)
布尔型
字符串
数组
元组
TinyLog
Memory
Merge
MergeTree(重点)
使用场景: 有海量数据要插入到表中, 需要高效地一批批写入数据片段, 并希望这些数据片段在后台按照一定规则合并。
特点:
格式:
ENGINE=MergeTree() # 指定引擎
PARTITION BY # 分区键, 要按月分区, 可以使用表达式toYYYYMM(date_column)
ORDER BY # 表的排序键, 可以是一组列的元组或任意的表达式, 例如: ORDER BY(id, name)。
PRIMARY KEY # 主键, 需要与排序键字段不同, 默认情况下主键跟排序键相同
SAMPLE BY # 用于抽样的表达式式。如果要用抽样表达式, 主键中必须包含此表达式
SETTINGS # 影响MergeTree性能的额外参数:
(1) index_granularity: 索引粒度, 即索引中相邻【标记】间的数据行数, 默认值: 8192
(2) use_minimalistic_part_header_in_zookeeper: 数据片段头在Zookeeper中的存储方式。
(3) min_merge_bytes_to_use_direct_io: 使用直接 I/O 来操作磁盘的合并操作时要求的最小的数据量。
ReplacingMergeTree
在MergeTree的基础上, 添加了"处理重复数据"的功能, 该引擎和MergeTree的不同之处在于它会删除有相同主键的重复项。
数据的去重只会在合并的过程中出现
合并会在未知的事件在后台运行, 所以无法预先作出计划。
有一些数据可能仍未必被处理, 因此ReplacingMergeTree适用于在后台清除重复的数据以节省空间, 但是它不保证没有重复的数据出现。
格式:
ENGINE=ReplacingMergeTree([ver]) # ver: 版本列, 类型为UInt*, Date 或DateTime
合并的时候, ReplacingMergeTree 从所有具有相同主键的行中选择一行留下, 如果ver列未指定, 选择最后一条。如果ver列已指定, 选择ver值最大的版本
PARTITION BY
ORDER BY
SAMPLE BY
SETTING name = value,...
SummingMergeTree
继承自MergeTree
当合并 SummingMergeTree 表的数据片段时, ClickHouse 会把所有具有相同主键的行合并为一行, 该行包含了被合并的行中具有数值数据类型的列的汇总值。
如果主键的组合方式使得单个兼职对应于大量的行, 则可以显著的减少存储空间并加快数据查询的速度
对于不可加的列, 会取一个最先出现的值。
格式:
ENGINE = SummingMergeTree([columns]) # column: 包含将要被汇总的列的列名的元组
PARTITION BY
ORDER BY
SAMPLE BY
SETTINGs name=value, ...
Distrubuted(重点)
分布式引擎, 本身不存储数据, 但可以在多个服务器上进行分布式查询。
读是自动并行的
读取时, 远程服务器表的索引(如果有的话)会被使用
格式
Distributed(cluster_name, database, table[, sharding_key])
# 参数: 集群名, 数据库, 表,分片键
标签:mysql 重复项 aci 不可 sharding ble 出现 primary 通过
原文地址:https://www.cnblogs.com/ronnieyuan/p/12512660.html