6

我确实在文档中找到了几个通过将参数传递给 ENGINE 部分来创建主键的示例。但是我没有找到关于 ENGINE 的任何参数、它的含义以及如何创建主键的任何描述。提前致谢。将此信息添加到它不存在的文档中会很棒。

4

1 回答 1

9

MergeTree 存储引擎系列支持主键。 https://clickhouse.tech/docs/en/engines/table_engines/mergetree_family/mergetree/

请注意,对于最严重的任务,您应该使用 MergeTree 系列的引擎。

它被指定为存储引擎的参数。

引擎接受参数:包含日期的 Date 类型列的名称、采样表达式(可选)、定义表主键的元组和索引粒度。

没有采样支持的示例:

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-replicated-tables

主键是在创建表时指定的,以后无法更改。

尽管有名称,但主键不是唯一的。它只是定义数据的排序顺序以最佳方式处理范围查询。您可以向表中插入许多具有相同主键值的行。

于 2016-08-01T19:02:48.397 回答