V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dtgxx
V2EX  ›  问与答

clickhouse 分布式表问题请教

  •  
  •   dtgxx · 2022-05-05 14:40:58 +08:00 · 901 次点击
    这是一个创建于 958 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我的集群是多分片两副本。最近发现当数据量太大的时候,直接写分布式表,会导致 zk 扛不住报错。 看到网上有建议直接写本地表的。

    ---

    所以有个问题就是,创建分布式表的时候是要指定分片键的,如果我手动写入本地表,数据是可以写进去,但是可能和 clickhouse 本身的数据分配不一致,这样会不会导致 clickhouse 在根据片键字段查询的时候,不去扫描所有分片导致查询不到数据呢? 大佬们是怎么处理这个问题的呢?
    3 条回复    2022-05-05 16:43:46 +08:00
    rower
        1
    rower  
       2022-05-05 16:30:00 +08:00
    查询的时候不是查询分布式表吗,分布式表将查询分发到每个本地表,然后查询结果汇总,不是很明白。这个怎么可能查询不到数据,再者说你自己测试下不就知道了
    zhengsidao
        2
    zhengsidao  
       2022-05-05 16:39:48 +08:00
    写数据是通过 lb 写的嘛,lb 写本地表,数据基本上是均匀的。
    另外每个分片都是一个实例,分配到每个实例上的查询计划执行完再汇总,不会出现说导致出现数据不一致、丢失的问题。
    dtgxx
        3
    dtgxx  
    OP
       2022-05-05 16:43:46 +08:00
    @rower #1 比如我把 sku_id 进行 hash 作为分片键了,当我对分布式表查询这个 sku_id 的时候, 会不会 clickhouse 通过规则,只去查询那个分片,因为 clickhouse 知道自己把这个数据存在哪个分片了,为了节省效率,就不查全部分片了。


    @zhengsidao #2 我手动来写本地表,数据就不是按照 clickhouse 的分布式的写数据逻辑了,比如 clickhouse 会把 id=1 的写在分片 1 ,我手动写可能把 id=1 的写到分片 2 。 我比较担心的是,clickhouse 在分布式表查询的时候,会不会认为 id=1 ,就直接去分片 1 查了,而不去全部的分片查询了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5463 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 06:49 · PVG 14:49 · LAX 22:49 · JFK 01:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.