You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何降低ClickHouse中asynchronous_metric_log的记录数量?

解决ClickHouse asynchronous_metric_log记录量过大的问题

先明确:和Prometheus写入无关

asynchronous_metric_log是ClickHouse自身的系统表,仅记录CH内部的异步运行指标,和外部Prometheus往CH写数据的操作完全无关,不用往这个方向排查。

先确认配置是否真的生效

你说修改配置无效,先核对以下几点:

  • 控制采集频率的核心参数是asynchronous_metrics_log_interval,默认值60秒(1分钟),单位为秒。要调整的话,需在config.xml或config.d目录下的自定义配置文件中添加/修改:
    <asynchronous_metrics_log_interval>60</asynchronous_metrics_log_interval>
    
  • 注意:修改该参数后必须重启ClickHouse服务才会生效,热加载(比如执行SYSTEM RELOAD CONFIG)对这类系统表参数不生效。

检查是不是搞混了系统表

别搞错了!system.asynchronous_metric_log默认1分钟采集一次,但system.metric_log是同步指标表,默认1秒采集一次,记录量会大得多。你执行查询时,确认下是不是查错表了?如果是metric_log的话,要调整的是metrics_log_interval参数,而非异步指标的配置。

减少采集的指标数量

如果配置没问题,但记录还是多,可能是开启了太多不必要的异步指标:

  • 先执行SELECT * FROM system.asynchronous_metrics,查看当前采集的所有异步指标,挑出实际需要保留的核心指标。
  • 在配置文件中通过asynchronous_metrics指定仅采集这些指标,比如:
    <asynchronous_metrics>
      <metric>Query</metric>
      <metric>MemoryTracking</metric>
      <!-- 只保留你需要的指标,其余删除 -->
    </asynchronous_metrics>
    
    这样每条日志的指标数量减少,既能降低单条日志体积,也能避免无关高频指标带来的额外记录。

加TTL自动清理旧数据

如果以上操作都完成了,还想控制表的大小,可以给表设置TTL,自动删除过期数据:

ALTER TABLE system.asynchronous_metric_log MODIFY TTL event_time + INTERVAL 7 DAY;

比如设置7天有效期,超过时间的数据会自动清理,无需手动操作。

内容的提问来源于stack exchange,提问作者mo mo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 19:55:12