leeing227 2023-07-08 17:42 采纳率: 0%
浏览 6

clickhouse使用问题

我在使用clickhouse的时候,遇到这样的问题:
1.背景:业务系统每秒30M的日志量
日志格式如下:
时间 level 类型 traceid parentid spanid service instance ip msg
level只有五个值
类型有10个值
traceid/parentid/spanid是调用链要用到的三个值
service大概K级别,instance是service的子项,假如service=svr1的话,instance取值就是svr-0,svr-1,svr-2这种,数量从1-100
建表的时候我按照day分区
order by字段如下:时间,类型,level,service,instance,traceid
2.现在的问题有几个:
1.第一个问题是集群查询超级慢:
单机clickhouse,写入和查询速度都在能接受范围内,但是上了集群,写入没问题,查询的时候响应特别慢。
单独查这样的条件:where type='ingress' and 时间>=‘2023-07-07 10:00:00’ and 时间 <=2023-07-07 11:00:00,相差1小时
在一个并发的前提下,数据量G级别的时候,耗时大概500ms
但是在5并发的情况下,耗时直接飙升到2s,加大并发到10,20,耗时直接飙升到10+s
不知道是什么原因?
2.第二个问题是:这样的设计表是不是有问题?order by字段是否需要调整,越小的放越前面?
3.第三个问题:按天分区是不是太粗,有必要调整成按小时分区吗?

  • 写回答

1条回答 默认 最新

  • 羁旅少年 人工智能新星创作者 2023-07-08 23:46
    关注

    集群查询超级慢的问题:
    集群查询速度慢可能有几个原因:

    查询语句优化:检查你的查询语句是否包含了适当的索引和过滤条件,以减少扫描的数据量。在你的查询中,你已经指定了时间范围和类型,但是还可能需要进一步优化。尝试使用更具体的过滤条件,例如针对特定的服务或实例,以减少数据量。
    集群配置:检查你的集群配置,确保每个节点的性能和负载均衡。如果某个节点负载过重或者性能较低,可能会导致查询速度变慢。
    数据分布:检查你的数据在集群中的分布情况,确保数据在各个节点之间平衡。如果某些节点承担了更多的数据负载,那么查询速度可能会受到影响。
    网络延迟:在集群中,网络延迟可能会影响查询速度。确保网络连接良好,并考虑使用本地缓存或者分布式缓存来减少网络延迟。
    关于你的第二个问题,关于表的顺序设计,按照时间、类型、level、service、instance、traceid的顺序进行排序是一个合理的选择。这样的顺序可以按照时间范围、类型、级别和服务的顺序进行过滤和查询。但是,根据你的查询条件,你可能需要考虑调整索引的顺序,以便更高效地处理查询请求。

    对于你的第三个问题,按天分区是否过于粗略的问题,这取决于你的数据访问模式和查询需求。如果你需要更精细的时间范围查询,比如按小时或者更短的时间间隔,那么可能需要考虑按小时分区或者更细粒度的分区方式。但是请注意,分区方式的选择也需要考虑数据的分布和查询负载。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月8日

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)