ClickHouse的普通操作是否“与众不同”?

时间:2018-10-29 18:45:37

标签: clickhouse

我想使用ClickHouse进行营销。大多数时候,他们不仅想知道有多少人使用某些功能,还想知道发送垃圾邮件的确切电子邮件。 将ClickHouse用于此类目的是否是一个不错的选择(请从表中的...选择DISTINCT电子邮件...)? “ select COUNT”和“ select DISTINCT”在性能上有什么区别?

1 个答案:

答案 0 :(得分:1)

  

将ClickHouse用于此类目的是一个不错的选择

是的,ClickHouse具有不错的HashTable和Aggregator实现。它大量使用模板化代码进行静态类型分派,并应用了大量内存技巧。并且它以紧凑的形式存储数据。

我假设您想比较select countselect count(distinct),因为select distinct是另一种野兽。 ClickHouse将count(distinct)转换为聚合器uniqExact,其速度比count(*)慢8倍,但仍然比Postgres等传统数据库快得多。也有近似聚合器uniquniqCombineduniqHLL12用于更快的估计,这比count(*)慢1.5倍。如需更多信息,请参见https://clickhouse.yandex/docs/en/query_language/agg_functions/reference/

如果您的目标是select distinct,ClickHouse仍然可以做得很好,它使用Set数据结构来统一数据流(Set也用于构建其SQL {{1 }}结构)。在不测量数据输出过程的情况下,它仅比普通in (...)慢1.3倍。