2016-07-31 44 views
4

我在文檔中發現了幾個通過向ENGINE部分傳遞參數來創建主鍵的示例。 但我沒有發現任何有關ENGINE的任何參數的描述,它的含義以及如何創建主鍵。 在此先感謝。將這個信息添加到它不存在的文檔中將是非常好的。如何在ClickHouse中創建主鍵

回答

5

MergeTree存儲引擎系列支持主鍵。 https://clickhouse.yandex/reference_en.html#MergeTree

注意,對於最嚴重的任務,你應該使用的發動機從 MergeTree家庭。

它被指定爲存儲引擎的參數。

引擎接受參數:包含日期,採樣表達式(可選),定義表的主鍵的元組以及索引粒度的Date類型列的名稱。

實施例,而不採樣支持:

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

實施例與採樣支持:

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

所以,(CounterID, EventDate)(CounterID, EventDate, intHash32(UserID))是在這些例子中的主鍵。

使用ReplicatedMergeTree時,還有兩個附加參數,標識分片和副本。

https://clickhouse.yandex/reference_en.html#Creating%20replicated%20tables

主鍵是在創建表的規定,不能再更改。

儘管名稱,主鍵不唯一。它只是定義數據的排序順序以最佳方式處理範圍查詢。您可以將多個具有相同主鍵值的行插入表中。

+0

非常感謝你,現在很清楚 –