Skip to main content

使用 system.query_log

下面这个实用查询会显示你已执行的查询中,哪些占用了最多内存。 关于这个查询,有几点说明:
  • 结果基于过去一天 (now() - toIntervalDay(1))) 的数据计算得出,不过你也可以轻松调整这个时间间隔
  • 它假设你有一个名为 default 的集群;在 ClickHouse Cloud 中,你的集群名称就是这个。请将 default 替换为你的集群名称
  • 如果你没有集群,请参阅本文末尾列出的查询
响应如下:
如果你没有 system.query_log 表,那么很可能尚未启用查询日志。有关如何启用它的详细信息,请参阅 query_log setting 的相关说明。
query_log 中记录的不止是你提交的查询你提交的一条查询可能会显示为多行:包括初始查询 (is_initial_query = 1) 以及派生步骤或内部步骤 (is_initial_query = 0) ,例如用于分布式执行的次级查询,或用于计算视图的内部查询。这些内部行都有各自的 query_id 值——由 ClickHouse 分配,有时还会带有类似 queryView... 的标签——因此,不要假定每个 query_id 都与你的客户端报告的一致。若要将使用情况归因到你实际运行的那条查询,请按 is_initial_query = 1 进行过滤,或匹配 query_id = initial_query_id。有关详细信息,请参阅如何识别最昂贵的查询query_log reference
如果你没有集群,则可以直接查询仅有的那张 system.query_log 表:
最后修改于 2026年8月14日