clickhouse 的 表和 表_local 区别是什么
在 ClickHouse 中,通常并没有内置的“表”和“表_local”这两个固定概念,它们更多的是一种命名约定,用来区分分布式查询层和实际存储数据的本地表。
本地表(例如 xxx_local)
这类表一般使用像 MergeTree 系列的引擎来存储实际数据,是存储数据的底层表。它们直接写入磁盘,并在单个节点上完成数据存储和查询。
分布式表(例如 xxx)
分布式表通常使用 Distributed 引擎,并不会直接存储数据,而是作为逻辑视图存在。它会把查询请求分发到集群中各个节点的对应本地表(如 xxx_local)上,整合各个节点上的结果返回给用户。分布式表适用于跨节点的查询,方便扩展和负载均衡。
总结:
通常在设计 ClickHouse 集群时,会在每个节点上建立一个存储实际数据的本地表(命名为 xxx_local),再在上层建立一个分布式表(命名为 xxx),用于跨节点统一查询。这样设计既保留了数据的本地存储高性能,又能通过分布式表实现跨节点数据聚合。