首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ClickHouse分布式表慢

ClickHouse分布式表慢
EN

Stack Overflow用户
提问于 2017-06-05 21:07:59
回答 2查看 1.6K关注 0票数 1

我在ClickHouse中创建了一个分布式表,共有两个碎片和一个数据副本。

代码语言:javascript
运行
复制
SELECT *
FROM system.clusters

┌─cluster──────────────┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_name────┬─host_address─┬─port─┬─is_local─┬─user────┬─default_database─┐
│ twoshardsonereplicas │         1 │            1 │           1 │ 192.168.8.70 │ 192.168.8.70 │ 9000 │        0 │ default │                  │
│ twoshardsonereplicas │         2 │            1 │           1 │ 192.168.8.71 │ 192.168.8.71 │ 9000 │        1 │ default │                  │
└──────────────────────┴───────────┴──────────────┴─────────────┴──────────────┴──────────────┴──────┴──────────┴─────────┴──────────────────┘

我有表exit和exit_all,这是分布式表。我将数据插入到表exit_all中,它将数据均匀地分布在两个服务器上。当我从本地退出表查询一半的记录时,只需0.15秒,而在exit_all上查询则需要0.45秒。我希望,由于处理是分开的,它将花费大约相同的时间。

我可以看到,当我计算我的查询时,对于这个查询,数据是完全分开的,或者在100 k上的100条记录中,所以并不是所有的数据都位于一台服务器上。

编辑:每2-3次查询的查询时间也会有很大的差异,对于某些查询,对于相同的查询,它将从1.3秒下降到750 to。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-08 17:26:52

要回答第一个问题:

分布式表可以为处理增加一定的开销。由于您正在执行两个查询,通过https传递结果并将它们合并,最后两个部分可以很好地增加0.3秒的处理时间,只需通过http将数据从一台计算机传递到另一台计算机(在本地网络中)就可以花费超过0.1秒的时间。

您的分布式查询仍然需要0.15秒,但是传输和合并结果需要更多的时间

要回答第二个问题: Clickhouse有内部查询缓存,所以重复查询可能会也可能不会触发缓存中的数据提取,从而使其更快。因此,您为什么注意到与查询时间不一致。

票数 1
EN

Stack Overflow用户

发布于 2018-03-15 15:03:30

我想几个月后我会回来更新这个。这个问题最终成为了网络瓶颈。我建议,如果您有类似的问题要使用类似的nload来查看整个集群的网络使用情况。一些需要30-40秒的查询在切换到10 10gbps网卡时实际上花费了2-5秒。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44377737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档