ClickHouse为什么不往分布式表直接写数据

参考博客
https://segmentfault.com/a/1190000037480509
https://blog.csdn.net/ashic/article/details/108725437

简单总结一下原因

  1. Distributed表在写入时会在本地节点生成临时数据,会产生写放大,所以会对CPU及内存造成一些额外消耗,建议尽量少使用Distributed表进行写操作;
  2. Distributed表写的临时block会把原始block根据sharding_key和weight进行再次拆分,会产生更多的block分发到远端节点,也增加了merge的负担;
ClickHouse是一个高性能列式数据库系统,特别适合大数据分析和在线事务处理(OLAP)场景。在ClickHouse中,数据可以存储在本地表分布式中,它们各自有不同的特点和应用场景。 **1. 本地表(Local Table):** - **定义:** 本地表是存储在单个节点(或副本集中的某个节点)上的数据结构,适合较小的数据集或对实时查询有较高要求的情况。 - **优点:** 查询速度快,因为数据是按照列存储的,并且可以直接从磁盘读取,减少了网络延迟。 - **缺点:** 随着数据量的增长,扩展性有限,如果需要更大的存储容量或更高的并发访问,需要手动复制到其他节点或使用分布式。 **2. 分布式(Distributed Table):** - **定义:** 分布式是由多个本地表组成,数据分布在多台服务器上,每个部分存储一部分数据。这样可以提供更好的水平扩展和容错能力。 - **优点:** 可以处理大量数据,支持并行查询,提高了处理大规模数据的能力。数据分布可以根据负载均衡策略自动调整。 - **缺点:** 查询可能涉及网络I/O,速度可能会受到网络延迟的影响。此外,分布式的复杂性也意味着维护和管理可能更复杂一些。 - **创建与查询:** 创建分布式时需要指定一个分布式键(distr_id),并指定参与存储的数据源本地表。查询分布式时,ClickHouse会自动将查询分散到各个子,执行结果再汇总。 **相关问题--:** 1. 如何在ClickHouse中创建本地表? 2. 如何设置分布式的复制策略? 3. 分布式如何提高查询性能? 4. 如何进行分布式的故障恢复? 5. 分布式和并行查询有何关联?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值