ClickHouse需要分区吗?ClickHouse到底有多快?

ClickHouse需要分区吗?ClickHouse到底有多快?

《ClickHouse需要分区吗?》

ClickHouse需要分区吗?

ClickHouse分区背景

在大数据常规的认知中,分区能减少表数据的扫描进而加快查询速度,然在ClickHouse中其实并不是这样。我在生产环境中多分区写入这里得到了如下的报错:

这里:“that partitioning is not intended to speed up SELECT queries (ORDER BY key is sufficient to make range queries fast). Partitions are intended for data manipulation (DROP PARTITION, etc)”,意思是分区并不能加快查询速度,而是用做数据表的分离和附加数据使用,也就是用于更新或者删除数据用。

ClickHouse分区生产方案

  • 我们生产环境离线数据更新周期一般为T+1,极少为Hour,且ClickHouse不推荐分区大于1000;
  • ClickHouse删除分区的动作,其实是异步的高频次delete操作过于沉重。官方推荐DETACH卸载再做删除。

所以我们这里结合实际业务场景并没有采用分区的方法去更新数据,而是参考ElasticSearch热更新的方案,采用了增量/全量滚动更新的方式,具体为:

ClickHouse全量和增量更新解决方案

ClickHouse对于分区的理解和操作

ClickHouse 分区的操作和理解

ClickHouse到底有多快?

测试环境

微软云,b系列, 2H4G, 持续IO不到30M,两分片两副本ClickHouse集群

创建本地表

创建分布式表

脚本写入1亿数据

ClickHouse速度测试

查询总数据量

查询某一天数据


查询某一天数据总量


稀疏索引骚啊

ClickHouse写入本地表注意事项

  • 间歇性大批量写入,例:即写入10-100w,然后sleep,循环即可。
  • 而非小批量持续写入,例:持续循环写入1w。

ClickHouse创建表注意事项

更新表时为防止zookeeper中路径冲突,创建表时ClickHouse存储路径精确到周期更新时间路径为后缀为佳,比如说时间戳也可。

版权所有,ClickHouse需要分区吗?ClickHouse到底有多快?,by:cpp.la

2 Replies to “ClickHouse需要分区吗?ClickHouse到底有多快?”

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注