如何在clickhouse中创建主键

s4n0splo  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(1)|浏览(1131)

我确实在文档中发现了一些通过向引擎部分传递参数来创建主键的示例。但我没有找到任何关于引擎参数的描述,它的含义以及如何创建主键。提前谢谢。如果能将这些信息添加到文档中,那就太好了,因为它并不存在。

pn9klfpd

pn9klfpd1#

mergetree存储引擎系列支持主键。https://clickhouse.tech/docs/en/engines/table_engines/mergetree_family/mergetree/
请注意,对于大多数严肃的任务,应该使用mergetree族中的引擎。
它被指定为存储引擎的参数。
引擎接受参数:包含日期的日期类型列的名称、采样表达式(可选)、定义表主键的元组以及索引粒度。
无采样支持的示例:

MergeTree(EventDate, (CounterID, EventDate), 8192)

采样支持示例:

MergeTree(EventDate, intHash32(UserID), (CounterID, EventDate, intHash32(UserID)), 8192)

所以, (CounterID, EventDate) 或者 (CounterID, EventDate, intHash32(UserID)) 是这些例子中的主键。
使用replicatedmergetree时,还有两个附加参数,标识shard和replica。
https://clickhouse.tech/docs/en/engines/table_engines/mergetree_family/replication/#creating-复制的表
主键是在表创建时指定的,以后无法更改。
尽管名称不同,主键也不是唯一的。它只是定义数据的排序顺序,以最佳方式处理范围查询。可以将主键值相同的多行插入到表中。

相关问题